1 animals.exe 0x00403029 (_start)
2 animals.exe 0x00402dbc (main)
3 som.dll     0x0034210f (somGetGlobalEnvironment)
4 som.dll     0x00334bb9 (somEnvironmentNew)
5 som.dll     0x00335573 (somSCAddStaticMethod)
6 som.dll     0x003374c2 (somSCInitializeClass)
7 som.dll     0x003443e8 (somAddNDMethod)


0x00402db0    push ebp
0x00402db1    mov  ebp, esp
0x00402db3    and  esp, 0xfffffff8
0x00402db6    sub  esp, +0x18
0x00402db9    push ebx
0x00402dba    push edi
0x00402dbb    push esi
0x00402dbc    call 0x40361a     animals.exe 0x0040361a (Animals_AnimalNewClass)

0x0040361a    jmp  dword ptr ds:[+0x4070d8]

0x00342100    push ebp          (somGetGlobalEnvironment)
0x00342101    mov  ebp, esp
0x00342103    sub  esp, +0x8
0x00342106    cmp  dword ptr ds:[+0x350000], +0x0
0x0034210d    jnz  0x342114
0x0034210f    call 0x334200

0x00334200    push ebp          (somEnvironmentNew)
0x00334201    mov  ebp, esp
0x00334203    sub  esp, +0x118
0x00334209    push esi
0x0033420a    sub  esp, +0xc
0x0033420d    mov  dword ptr [ebp-0x4], 0x0
0x00334214    call 0x34571c

0x0034571c    push ebp          (somSO_CIB)
0x0034571d    mov  ebp, esp
0x0034571f    mov  eax, 0x3a3630
0x00345724    leave
0x00345725    ret

0x00334219    mov  dword ptr [ebp-0x8], eax (somEnvironmentNew)
0x0033421c    call 0x335550

0x00335550    push ebp          (somSC_CIB)
0x00335551    mov  ebp, esp
0x00335553    mov  eax, 0x3a1900
0x00335558    leave
0x00335559    ret

0x00334221    mov  dword ptr [ebp-0xc], eax (somEnvironmentNew)
0x00334224    mov  dword ptr [ebp-0x10], 0x4
0x0033422b    mov  eax, dword ptr [ebp-0x10]
0x0033422e    mov  dword ptr [ebp-0x14], eax
0x00334231    mov  eax, dword ptr [ebp-0x14]
0x00334234    add  eax, +0x14
0x00334237    mov  dword ptr [ebp-0x18], eax
0x0033423a    call 0x34a484

0x0034a484    push ebp          (somSysDepInit)
0x0034a485    mov  ebp, esp
0x0034a487    sub  esp, +0x4
0x0034a48a    mov  dword ptr [ebp-0x4], 0x0
0x0034a491    push 0x34a460
0x0034a496    push 0x3a38e0
0x0034a49b    call 0x34aca4

0x0034aca4    push ebp          (somInitOnce)
0x0034aca5    mov  ebp, esp
0x0034aca7    sub  esp, +0x4
0x0034acaa    push 0x1
0x0034acac    push dword ptr [ebp+0x8]
0x0034acaf    call dword ptr ds:[+0x3801d8]
0x0034acb5    test eax, eax
0x0034acb7    jnz  0x34acdf

0x0034acdf    push 0xffffffff   (somInitOnce)
0x0034ace1    mov  eax, dword ptr [ebp+0x8]
0x0034ace4    push dword ptr [eax+0x8]
0x0034ace7    call dword ptr ds:[+0x3801f8]
0x0034aced    mov  dword ptr [ebp-0x4], eax
0x0034acf0    cmp  dword ptr [ebp-0x4], -0x1
0x0034acf4    jnz  0x34ad01

0x0034ad01    mov  eax, dword ptr [ebp+0x8] (somInitOnce)
0x0034ad04    cmp  dword ptr [eax+0x4], +0x0
0x0034ad08    jnz  0x34ad17

0x0034ad17    mov  eax, dword ptr [ebp+0x8] (somInitOnce)
0x0034ad1a    push dword ptr [eax+0x8]
0x0034ad1d    call dword ptr ds:[+0x3801e4]
0x0034ad23    mov  dword ptr [ebp-0x4]
0x0034ad26    cmp  dword ptr [ebp-0x4], +0x0
0x0034ad2a    jnz  0x34ad37

0x0034ad37    xor  eax, eax     (somInitOnce)
0x0034ad39    leave
0x0034ad3a    ret  0x8

0x0034a4a0    mov  dword ptr [ebp-0x4], eax (somSysDepInit)
0x0034a4a3    mov  eax, dword ptr [ebp-0x4]
0x0034a4a6    leave
0x0034a4a7    ret

0x0033423f    push dword ptr ds:[+0x350cb4] (somEnvironmentNew)
0x00334245    call dword ptr ds:[+0x3a38fc]


0x0034a3ac    push ebp          (SOMRequestMutexSem / somTerminateProcess)
0x0034a3ad    mov  ebp, esp
0x0034a3af    sub  esp, +0x4
0x0034a3b2    push 0xffffffff
0x0034a3b4    push dword ptr [ebp+0x8]
0x0034a3b7    call dword ptr ds:[+0x3801f8]
0x0034a3bd    mov  dword ptr [ebp-0x4], eax
0x0034a3c0    cmp  dword ptr [ebp-0x4], +0x0
0x0034a3c4    jz   0x34a3cf

0x0034a3cf    xor  eax, eax     (SOMRequestMutexSem / somTerminateProcess)
0x0034a3d1    leave
0x0034a3d2    ret  0x4

0x0033424b    mov  dword ptr [ebp-0x1c], 0x0 (somEnvironmentNew)
0x00334252    call 0x34a9f8

0x0034a9f8    push ebp          (somGetThreadData)
0x0034a9f9    mov  ebp, esp
0x0034a9fb    sub  esp, +0x8
0x0034a9fe    lea  eax, dword ptr [ebp-0x4]
0x0034aa01    push eax
0x0034aa02    push dword ptr ds:[+0x350c44]
0x0034aa08    call 0x34af20

0x0034af20    push ebp          (somGetThreadKey)
0x0034af21    mov  ebp, esp
0x0034af23    mov  eax, dword ptr [ebp+0x8]
0x0034af26    push dword ptr [eax+0x4]
0x0034af29    call dword ptr ds:[+0x3801f0]
0x0034af2f    mov  ecx, eax
0x0034af31    mov  eax, dword ptr [ebp+0xc]
0x0034af34    mov  dword ptr [eax], ecx
0x0034af36    xor  eax, eax
0x0034af38    leave
0x0034af39    ret  0x8

0x0034aa0d    cmp  dword ptr [ebp-0x4], +0x0 (somGetThreadData)
0x0034aa11    jnz  0x34aa42
0x0034aa13    mov  eax, 0x48
0x0034aa18    call 0x347c0c     // somCalloc
                                // eax = 0x00ad4d90
0x0034aa1d    mov  dword ptr [ebp-0x4], eax
0x0034aa20    cmp  dword ptr [ebp-0x4], +0x0
0x0034aa24    jnz  0x34aa2d

0x0034aa2d    mov  eax, dword ptr [ebp-0x4] (somGetThreadData)
0x0034aa30    mov  byte ptr [eax+0x44], 0x41
0x0034aa34    push dword ptr [ebp-0x4]
0x0034aa37    push dword ptr ds:[+0x350c44]
0x0034aa3d    call 0x34af3c     // somSetThreadKey
0x0034aa42    mov  eax, dword ptr [ebp-0x4]
0x0034aa45    add  esp, +0x4
0x0034aa48    leave
0x0034aa49    ret
                                // eax = 0x00ad4d90
0x00334257    mov  dword ptr [ebp-0x20], eax
0x0033425a    mov  eax, dowrd ptr [ebp-0x20]
0x0033425d    cmp  dword ptr [eax+0x20], +0x0
0x00334261    jz   0x334294

0x00334294    mov  eax, dword ptr [ebp-0x20] (somEnvironmentNew)
0x00334297    mov  dword ptr [eax+0x20], 0x1
0x0033429e    mov  eax, eax
0x003342a0    mov  eax, dword ptr [ebp-0x20]
0x003342a3    call dword ptr ds:[+0x380260] // setjmp
0x003342a9    mov  dword ptr [ebp-0x44], eax
0x003342ac    cmp  dword ptr [ebp-0x44], +0x0
0x003342b0    jnz  0x334eec
0x003342b6    cmp  dword ptr ds:[+0x350000], +0x0
0x003342bd    jnz  0x334f50
0x003342c3    mov  eax, dword ptr [ebp-0xc]
0x003342c6    mov  eax, dword ptr [eax+0x60]
0x003342c9    mov  dword ptr [eax], 0x3a28f4
0x003342cf    xor  eax, eax
0x003342d1    call 0x3426a8     // somCreateIdSpace
                                // eax = 0xad4df0
0x003342d6    call 0x342a7c     // somBeginPersistentIds
                                // eax = 00000000
0x003342db    call 0x3353e0     // somcRegStaticIds
                                // eax = 00000001
0x003342e0    mov  dword ptr [ebp-0x48], 0x0
0x003342e7    call 0x34a9f8     // somGetThreadData
0x003342ec    mov  dword ptr [ebp-0x4c], eax
0x003342ef    mov  eax, dword ptr [ebp-0x4c]
0x003342f2    cmp  dword ptr [eax+0x20], +0x0
0x003342f6    jz   0x334328
0x003342f8    mov  ecx, 0x20
0x003342fd    mov  edx, dword ptr [ebp-0x4c]
0x00334300    lea  eax, dword ptr [ebp-0x6c]
0x00334303    call 0x3300d2     // memcpy
0x00334308    mov  dword ptr [ebp-0x48], 0x1
0x0033430f    mov  eax, dword ptr [ebp-0x4c]
0x00334312    mov  dword ptr [ebp-0xec], eax
0x00334318    mov  eax, dword ptr [ebp-0xec]
0x0033431e    mov  ecx, dword ptr [eax+0x20]
0x00334321    inc  ecx
0x00334322    mov  dword ptr [eax+0x20], ecx
0x00334325    jmp  0x334332

0x00334332    mov  eax, dword ptr [ebp-0x4c] (somEnvironmentNew)
0x00334335    call dword ptr ds:[+0x380260] // setjmp
0x0033433b    mov  dword ptr [ebp-0x70], eax
0x0033433e    cmp  dword ptr [ebp-0x70], +0x0
0x00334342    jnz  0x334e4c
0x00334348    mov  dword ptr [ebp-0x74], 0x3a28f4
0x0033434f    mov  eax, dword [ebp-0x18]
0x00334352    call 0x347c0c     // somCalloc
                                // eax = 0x00ad7dd0
0x00334357    mov  dword ptr [ebp-0x78], eax
0x0033435a    mov  eax, dword ptr [ebp-0x78]
0x0033435d    mov  dword ptr ds:[+0x3a28f4], eax
0x00334362    mov  eax, dword ptr [ebp-0x18]
0x00334365    call 0x347c0c     // somCalloc
                                // eax = 0x00ad7e00
0x0033436a    mov  dword ptr [ebp-0x7c], eax
0x0033436d    mov  eax, dword ptr [ebp-0x7c]
0x00334370    mov  dword ptr ds:[+0x3a01bc], eax
0x00334375    mov  eax, dword ptr [ebp-0x78]
0x00334378    mov  ecx, dword ptr [ebp-0x14]
0x0033437b    add  eax, eax
0x0033437d    mov  dword ptr [ebp-0x80], eax
0x00334380    mov  eax, dword ptr [ebp-0x7c]
0x00334383    mov  ecx, dword ptr [ebp-0x14]
0x00334386    add  eax, ecx
0x00334388    mov  dword ptr [ebp-0x84], eax
0x0033438e    mov  dword ptr [ebp-0x90], 0x0
0x00334398    mov  eax, dword ptr [ebp-0x90]
0x0033439e    mov  dword ptr [ebp-0x8c], eax
0x003343a4    mov  dword ptr [ebp-0x88], 0x0
0x003343ae    mov  dword ptr [ebp-0x9c], 0x1
0x003343b8    mov  eax, dword ptr [ebp-0x9c]
0x003343be    mov  dword ptr [ebp-0x98], eax
0x003343c4    mov  eax, dword ptr [ebp-0x74]
0x003343c7    mov  dword ptr [ebp-0x94], eax
0x003343cd    mov  eax, 0x64
0x003343d2    call 0x347c0c     // somCalloc
                                // eax = 0x00ad7e30
0x003343d7    mov  ecx, eax
0x003343d9    mov  eax, dword ptr [ebp-0x80]
0x003343dc    dword ptr [eax+0x10], ecx
0x003343df    mov  eax, dword ptr [ebp-0x80]
0x003343e2    mov  ecx, dword ptr [ebp-0x78]
0x003343e5    mov  dword ptr [eax+0x8], ecx
0x003343e8    mov  eax, dword ptr [ebp-0x80]
0x003343eb    mov  eax, dword ptr [eax+0x10]
0x003343ee    mov  dword ptr [eax+0x4], 0x0
0x003343f5    mov  eax, dword ptr [ebp-0x80]
0x003343f8    mov  eax, dword ptr [0x10]
0x003343fb    mov  dword ptr [eax+0x8], 0x0
0x00334402    mov  eax, dword ptr [ebp-0x80]
0x00334405    mov  eax, dword ptr [eax+0x10]
0x00334408    mov  ecx, dword ptr [ebp-0x10]
0x0033440b    mov  dword ptr [eax+0xc], ecx
0x0033440e    mov  eax, dword ptr [ebp-0x80]
0x00334411    mov  eax, dword ptr [eax+0x10]
0x00334414    mov  ecx, dword ptr [ebp-0x78]
0x00334417    mov  dword ptr [eax+0x20], ecx
0x0033441a    mov  eax, dword ptr [ebp-0x80]
0x0033441d    mov  eax, dword ptr [eax+0x10]
0x00334420    mov  dword ptr [eax+0x24], 0x0
0x00334427    mov  eax, dword ptr [ebp-0x80]
0x0033442a    mov  eax, dword ptr [eax+0x10]
0x0033442d    mov  ecx, dword ptr [ebp-0x78]
0x00334430    mov  dword ptr [eax+0x28], ecx
0x00334433    mov  eax, dword ptr [ebp-0x80]
0x00334436    mov  eax, dword ptr [eax+0x10]
0x00334439    mov  dword ptr [eax+0x2c], 0x0
0x00334440    mov  eax, dword ptr [ebp-0x80]
0x00334443    mov  eax, dword ptr [eax+0x10]
0x00334446    mov  dword ptr [eax+0x58], 0x0
0x0033444d    mov  eax, dword ptr [ebp-0x80]
0x00334450    mov  eax, dword ptr [eax+0x10]
0x00334453    mov  dword ptr [eax+0x5c], 0x0
0x0033445a    mov  eax, dword ptr [ebp-0x80]
0x0033445d    mov  eax, dword ptr [eax+0x10]
0x00334460    mov  ecx, dword ptr [ebp-0x8]
0x00334463    mov  dword ptr [eax+0x60], ecx
0x00334466    mov  esi, dword ptr [ebp-0x80]
0x00334469    mov  esi, dword ptr [esi+0x10]
0x0033446c    mov  esi, dword ptr [esi+0x60]
0x0033446f    mov  esi, dword ptr [esi+0x8]
0x00334472    mov  eax, 0x14
0x00334477    call 0x347c0c     // somCalloc
                                // eax = 0x00ad7eb0
0x0033447c    mov  ecx, eax
0x0033447e    mov  eax, esi
0x00334480    mov  dword ptr [eax], ecx
0x00334482    mov  eax, dword ptr [ebp-0x80]
0x00334485    mov  eax, dword ptr [eax+0x10]
0x00334488    mov  eax, dword ptr [eax+0x60]
0x0033448b    mov  eax, dword ptr [eax+0x58]
0x0033448e    mov  ecx, dword ptr [ebp-0x78]
0x00334491    mov  dword ptr [eax], ecx
0x00334493    mov  eax, dword ptr [ebp-0x80]
0x00334496    mov  eax, dword ptr [eax+0x10]
0x00334499    mov  eax, dword ptr [eax+0x60]
0x0033449c    mov  eax, dword ptr [eax+0x58]
0x0033449f    mov  eax, dword ptr [eax+0x4]
0x003344a2    mov  dword ptr [eax], 0x0
0x003344a8    mov  eax, dword ptr [ebp-0x80]
0x003344ab    mov  eax, dword ptr [eax+0x10]
0x003344ae    mov  eax, dword ptr [eax+0x60]
0x003344b1    mov  eax, dword ptr [eax+0x58]
0x003344b4    mov  eax, dword ptr [eax+0x4]
0x003344b7    mov  ecx, dword ptr [ebp-0x8]
0x003344ba    mov  dword ptr[eax+0x8], ecx
0x003344bd    mov  eax, dword ptr [ebp-0x80]
0x003344c0    mov  eax, dword ptr [eax+0x10]
0x003344c3    mov  eax, dword ptr [eax+0x60]
0x003344c6    mov  eax, dword ptr [eax+0x58]
0x003344c9    mov  eax, dword ptr [eax+0x4]
0x003344cc    mov  ecx, dword ptr [ebp-0x10]
0x003344cf    mov  dword ptr [eax+0x10], ecx
0x003344d2    mov  eax, dword ptr [ebp-0x80]
0x003344d5    mov  eax, dword ptr [eax+0x10]
0x003344d8    mov  eax, dword ptr [eax+0x60]
0x003344db    mov  eax, dword ptr [eax+0x4]
0x003344de    mov  dword ptr [eax+0x10], 0x3341dc
0x003344e5    mov  eax, dword ptr [ebp-0x80]
0x003344e8    mov  eax, dword ptr [eax+0x10]
0x003344eb    mov  eax, dword ptr [eax+0x60]
0x003344ee    mov  eax, dword ptr [eax+0x4]
0x003344f1    mov  dword ptr [eax+0x14], 0x3341f0
0x003344f8    mov  eax, dword ptr [ebp-0x80]
0x003344fb    mov  eax, dword ptr [eax+0x10]
0x003344fe    mov  eax, dword ptr [eax+0x60]
0x00334501    push dword ptr [eax+0x44]
0x00334504    mov  eax, dword ptr [ebp-0x80]
0x00334507    mov  eax, dword ptr [eax+0x10]
0x0033450a    mov  eax, dword ptr [eax+0x60]
0x0033450d    push dword ptr [eax+0x48]
0x00334510    call 0x342c08     // somRegisterIds
0x00334515    mov  eax, dword ptr [ebp-0x80]
0x00334518    mov  eax, dword ptr [eax+0x10]
0x0033451b    mov  eax, dword ptr [eax+0x60]
0x0033451e    push dword ptr [eax+0x48]
0x00334521    call 0x34299c     // somStringFromId
0x00334526    mov  ecx, eax
0x00334528    mov  eax, dword ptr [ebp-0x80]
0x0033452b    mov  dword ptr [eax], ecx
0x0033452d    mov  esi, dword ptr [ebp-0x80]
0x00334530    mov  esi, dword ptr [esi+0x10]
0x00334533    mov  eax, 0x8
0x00334538    call 0x347b0c     // somMalloc
                                // eax = 0x00ad7ee0 (0x00ad7eb0)
0x0033453d    mov  ecx, eax
0x0033453f    mov  eax, esi
0x00334541    mov  dword ptr [eax], ecx
0x00334543    mov  eax, dword ptr [ebp-0x80]
0x00334546    mov  eax, dword ptr [eax+0x10]
0x00334549    mov  eax, dword ptr [eax]
0x0033454b    mov  dword ptr [ebp-0xa0], eax
0x00334551    mov  eax, dword ptr [ebp-0xa0]
0x00334557    mov  ecx, dword ptr [ebp-0x78]
0x0033455a    mov  dword ptr [eax], ecx
0x0033455c    mov  eax, dword ptr [ebp-0xa0]
0x00334562    mov  dword ptr [eax+0x4], 0x0
0x00334569    mov  eax, 0x28
0x0033456e    call 0x347b0c     // somMalloc
                                // eax = 0x00ad7f00 (0x00ad7ed0)
0x00334573    mov  dword ptr [ebp-0xa4], eax
0x00334579    mov  eax, dword ptr [ebp-0xa4]
0x0033457f    mov  dword ptr [ebp-0xa8], eax
0x00334585    mov  eax, dword ptr [ebp-0xa8]
0x0033458b    mov  ecx, dword ptr [ebp-0x78]
0x0033458e    mov  dword ptr [eax], ecx
0x00334590    mov  eax, dword ptr [ebp-0xa8]
0x00334596    mov  byte ptr [eax+0x12], 0x3
0x0033459a    mov  ecx, dword ptr [ebp-0x80]
0x0033459d    mov  ecx, dword ptr [ecx+0x10]
0x003345a0    mov  ecx, dword ptr [ecx+0x60]
0x003345a3    mov  ecx, dword ptr [ecx+0x80]
0x003345a9    mov  eax, dword ptr [ebp-0xa8]
0x003345af    mov  word ptr [eax+0x10], cx
0x003345b3    mov  ecx, dword ptr [ebp-0x80]
0x003345b6    mov  ecx, dword ptr [ecx+0x10]
0x003345b9    mov  ecx, dword ptr [ecx+0x60]
0x003345bc    mov  ecx, dword ptr [ecx+0x4]
0x003345bf    mov  ecx, dword ptr [ecx+0x8]
0x003345c2    mov  eax, dword ptr [ebp-0xa8]
0x003345c8    mov  dword ptr [eax+0xc], ecx
0x003345cb    mov  eax, dword ptr [ebp-0xa8]
0x003345d1    mov  dword ptr [eax+0x8], 0x0
0x003345d8    mov  eax, dword ptr [ebp-0xa8]
0x003345de    mov  dword ptr [eax+0x14], 0x0
0x003345e5    mov  esi, dword ptr [ebp-0x80]
0x003345e8    mov  esi, dword ptr [esi+0x10]
0x003345eb    mov  eax, 0x400
0x003345f0    call 0x347c0c     // somCalloc
                                // eax = 0x00ad7f10
0x003345f5    mov  ecx, eax
0x003345f7    mov  eax, esi
0x003345f9    mov  dword ptr [eax+0x54], ecx
0x003345fc    mov  ecx, dword ptr [ebp-0x80]
0x003345ff    mov  ecx, dword ptr [ecx+0x10]
0x00334602    mov  ecx, dword ptr [ecx+0x54]
0x00334605    add  ecx, +0xc
0x00334608    mov  eax, dword ptr [ebp-0x80]
0x0033460b    mov  eax, dword ptr [eax+0x10]
0x0033460e    mov  eax, dword ptr [eax+0x54]
0x00334611    mov  dword ptr [eax+0x4], ecx
0x00334614    mov  eax, dword ptr [ebp-0x80]
0x00334617    mov  eax, dword ptr [eax+0x10]
0x0033461a    mov  eax, dword ptr [eax+0x54]
0x0033461d    mov  dword ptr [eax], 0x3f4
0x00334623    mov  eax, dword ptr [ebp-0x80]
0x00334626    mov  eax, dword ptr [eax+0x10]
0x00334629    mov  eax, dword ptr [eax+0x54]
0x0033462c    mov  dword ptr [eax+0x8], 0x0
0x00334633    mov  eax, dword ptr [ebp-0x80]
0x00334636    mov  eax, dword ptr [eax+0x10]
0x00334639    mov  ecx, dword ptr [ebp-0xa4]
0x0033463f    mov  dword ptr [eax+0x4c], ecx
0x00334642    mov  eax, dword ptr [ebp-0x80]
0x00334645    mov  eax, dword ptr [eax+0x10]
0x00334648    mov  dword ptr [eax+0x50], 0x0
0x0033464f    mov  eax, dword ptr [ebp-0x80]
0x00334652    mov  eax, dword ptr [eax+0x10]
0x00334655    mov  dword ptr [eax+0x30], 0x0
0x0033465c    mov  eax, dword ptr [ebp-0x80]
0x0033465f    mov  eax, dword ptr [eax+0x10]
0x00334662    mov  dword ptr [eax+0x34], 0x0
0x00334669    mov  eax, dword ptr [ebp-0x80]
0x0033466c    mov  eax, dword ptr [eax+0x10]
0x0033466f    mov  dword ptr [eax+0x38], 0x0
0x00334676    mov  eax, dword ptr [ebp-0x80]
0x00334679    mov  eax, dword ptr [eax+0x10]
0x0033467c    mov  dword ptr [eax+0x3c], 0x0
0x00334683    mov  eax, dword ptr [ebp-0x80]
0x00334686    mov  eax, dword ptr [eax+0x10]
0x00334689    mov  dword ptr [eax+0x44], 0x0
0x00334690    mov  eax, dword ptr [ebp-0x80]
0x00334693    mov  eax, dword ptr [eax+0x10]
0x00334696    mov  dword ptr [eax+0x40], 0x0
0x0033469d    mov  eax, dword ptr [ebp-0x80]
0x003346a0    mov  eax, dword ptr [eax+0x10]
0x003346a3    mov  dword ptr [eax+0x48], 0x0
0x003346aa    mov  edx, dword ptr [ebp-0xa4]
0x003346b0    mov  eax, dword ptr [ebp-0x78]
0x003346b3    call 0x343d54     // eax = 0x00ad7da0
                                // edx = 0x00ad7ed0

0x00343d54    push ebp          (somSCInitMtab)
0x00343d55    mov  ebp, esp
0x00343d57    sub  esp, +0x30
0x00343d5a    push esi
0x00343d5b    sub  esp, +0xc
0x00343d5e    mov  dword ptr [ebp+0x8], eax
0x00343d61    mov  dword ptr [ebp+0xc], edx
0x00343d64    cmp  dword ptr ds:[+x350000], +0x0
0x00343d6b    jnz  0x343d78
0x00343d6d    mov  eax, dword ptr [ebp+0x8]
0x00343d70    add  eax, +0x4
0x00343d73    mov  dword ptr [ebp-0x8], eax
0x00343d76    jmp  0x343d83

0x00343d83    mov  eax, dword ptr [ebp-0x8] (somSCInitMtab)
0x00343d86    mov  dword ptr [ebp-0x4], eax
0x00343d89    mov  dword ptr [ebp-0xc], 0x30
0x00343d90    mov  dword ptr [ebp-0x10], 0x0
0x00343d97    mov  dword ptr [ebp-0x14], 0x0
0x00343d9e    mov  dword ptr [ebp-0x18], 0x0
0x00343da5    mov  eax, dword ptr ds:[+0x3a28ec]
0x00343daa    shl  eax, 0x2
0x00343dad    sub  eax, +0x4
0x00343db0    add  eax, dword ptr [ebp-0xc]
0x00343db3    mov  dword ptr [ebp-0xc], eax
0x00343db6    mov  eax, dword ptr [ebp-0xc]
0x00343db9    mov  dword ptr [ebp-0x18], eax
0x00343dbc    mov  eax, dword ptr [ebp+0xc]
0x00343dbf    mov  dword ptr [ebp-0x1c], eax
0x00343dc2    mov  eax, dword ptr [ebp-0x1c]
0x00343dc5    cmp  dword ptr [eax], +0x0
0x00343dc8    jz   0x343dff
0x00343dca    mov  eax, eax
0x00343dcc    mov  eax, dword ptr [ebp-0x1c]
0x00343dcf    test byte ptr [eax+0x12], 0x1
0x00343dd3    jz   0x343dee
0x00343dd5    mov  eax, dword ptr [ebp-0x1c]
0x00343dd8    mov  eax, dword ptr [eax]
                                // eax = 0x00ad7da0
0x00343dda    call 0x33b668

0x0033b668    push ebp          (somSCGetMaxNDMethods)
0x0033b669    mov  ebp, esp
0x0033b66b    sub  esp, +0xc
0x0033b66e    mov  dword ptr [ebp+0x8], eax
0x0033b671    cmp  dword ptr ds:[+0x350000], +0x0
0x0033b678    jnz  0x33b688
0x0033b67a    mov  eax, dword ptr [ebp+0x8]
0x0033b67d    add  eax, +0x4
0x0033b680    mov  dword ptr [ebp-0x8], eax
0x0033b683    jmp  0x33b693

0x0033b693    mov  eax, dword ptr [ebp-0x8] (somSCGetMaxNDMethods)
0x0033b696    mov  dword ptr [ebp-0x4], eax
0x0033b699    mov  eax, dword ptr [ebp-0x4]
0x0033b69c    mov  eax, dword ptr [eax+0x10]
0x0033b69f    mov  eax, dword ptr [eax+0x60]
0x0033b6a2    mov  eax, dword ptr [eax+0x80]
0x0033b6a8    add  esp, +0x4
0x0033b6ab    leave
0x0033b6ac    ret
                                // eax = 0x00000027
0x00343ddf    shl  eax, 0x3     (somSCInitMTab)
0x00343de2    sub  eax, +0x8
0x00343de5    add  eax, +0x1c
0x00343de8    add  eax, dword ptr [ebp-0xc]
0x00343deb    mov  dword ptr [ebp-0xc], eax
0x00343dee    mov  eax, dword ptr [ebp-0x1c]
0x00343df1    add  eax, +0x14
0x00343df4    mov  dword ptr [ebp-0x1c], eax
0x00343df7    mov  eax, dword ptr [ebp-0x1c]
0x00343dfa    cmp  dword ptr [eax], +0x0
0x00343dfd    jnz  0x343dcc
0x00343dff    mov  eax, dword ptr [ebp-0xc]
0x00343e02    mov  dword ptr [ebp-0x14], eax
0x00343e05    mov  eax, dword ptr [ebp-0xc]
0x00343e08    mov  dword ptr [ebp-0x1c], eax
0x00343e0b    mov  eax, dword ptr [ebp-0x1c]
0x00343e0e    cmp  dword ptr [eax], +0x0
0x00343e11    jz   0x343e2c
0x00343e13    cld
0x00343e14    mov  eax, dword ptr [ebp-0x10]
0x00343e17    inc  eax
0x00343e18    mov  dword ptr [ebp-0x10], eax
0x00343e1b    mov  eax, dword ptr [ebp-0x1c]
0x00343e1e    add  eax, +0x14
0x00343e21    mov  dword ptr [ebp-0x1c], eax
0x00343e24    mov  eax, dword ptr [ebp-0x1c]
0x00343e27    cmp  dword ptr [eax], +0x0
0x00343e2a    jnz  0x343e14
0x00343e2c    mov  eax, dword ptr [ebp-0x10]
0x00343e2f    shl  eax, 0x2
0x00343e32    add  eax, +0x4
0x00343e35    add  eax, dword ptr [ebp-0xc]
0x00343e38    mov  dword ptr [ebp-0xc], eax
0x00343e3b    mov  eax, dword ptr [ebp-0x4]
0x00343e3e    mov  eax, dword ptr [eax+0x10]
0x00343e41    mov  ecx, dword ptr [ebp-0xc]
0x00343e44    mov  dword ptr [eax+0x14], ecx
0x00343e47    mov  edx, dword ptr [ebp-0xc]
0x00343e4a    mov  eax, dword ptr [ebp-0x4]
0x00343e4d    mov  eax, dword ptr [eax+0x10]
0x00343e50    mov  eax, dword ptr [eax+0x54]
0x00343e53    call 0x33a310

0x0033a310    push ebp          (somcGetClassMem)
0x0033a311    mov  ebp, esp
0x0033a313    sub  esp, +0x10
0x0033a316    mov  dword ptr [ebp+0x8], eax
0x0033a319    mov  dword ptr [ebp+0xc], edx
0x0033a31c    mov  eax, dword ptr [ebp+0x8]
0x0033a31f    mov  eax, dword ptr [eax]
0x0033a321    cmp  dword ptr [ebp+0xc], eax
0x0033a324    jna  0x33a34c

0x0033a34c    mov  eax, dword ptr [ebp+0x8] (somcGetClassMem)
0x0033a34f    mov  eax, dword ptr [eax]
0x0033a351    cmp  dword ptr [ebp+0xc], eax
0x0033a354    ja   0x33a388
0x0033a356    mov  eax, dword ptr [ebp+0x8]
0x0033a359    mov  eax, dword ptr [eax+0x4]
0x0033a35c    mov  dword ptr [ebp-0x4], eax
0x0033a35f    mov  eax, dword ptr [ebp+0x8]
0x0033a362    mov  dword ptr [ebp-0x8], eax
0x0033a365    mov  eax, dword ptr [ebp-0x8]
0x0033a368    mov  ecx, dword ptr [eax]
0x0033a36a    sub  ecx, dword ptr [ebp+0xc]
0x0033a36d    mov  dword ptr [eax], ecx
0x0033a36f    mov  eax, dword ptr [ebp+0x8]
0x0033a372    mov  dword ptr [ebp-0xc], eax
0x0033a375    mov  eax, dword ptr [ebp-0xc]
0x0033a378    mov  ecx, dword ptr [eax+0x4]
0x0033a37b    mov  edx, dword ptr [ebp+0xc]
0x0033a37e    add  ecx, edx
0x0033a380    mov  dword ptr [eax+0x4], ecx
0x0033a383    jmp  0x33a3f1

0x0033a3f1    mov  eax, dword ptr [ebp-0x4] (somcGetClassMem)
0x0033a3f4    add  esp, +0x4
0x0033a3f7    leave
0x0033a3f8    ret
                                // eax = 0x00ad7f1c
0x00343e58    mov  dword ptr [ebp-0x20], eax
0x00343e5b    mov  eax, dword ptr [ebp-0x4]
0x00343e5e    mov  ecx, dword ptr [ebp-0x20]
0x00343e61    mov  dword ptr [eax+0x4], ecx
0x00343e64    mov  ecx, dword ptr [ebp-0xc]  // ecx = 0x00000200
0x00343e67    xor  edx, edx
0x00343e69    mov  eax, dword ptr [ebp-0x20] // eax = 0x00ad7f1c
0x00343e6c    call 0x3300d8     // memset
0x00343e71    mov  eax, dword ptr [ebp-0x20]
0x00343e74    mov  ecx, dword ptr [ebp+0x8]
0x00343e77    dword ptr [eax], ecx
0x00343e79    mov  eax, dword ptr [ebp-0x4]
0x00343e7c    mov  eax, dword ptr [eax+0x4]
0x00343e7f    mov  ecx, dword ptr [ebp+0xc]
0x00343e82    mov  dword ptr [eax+0x4], ecx
0x00343e85    mov  ecx, dword ptr [ebp-0x4]
0x00343e88    mov  ecx, dword ptr [ecx]
0x00343e8a    mov  eax, dword ptr [ebp-0x20]
0x00343e8d    mov  dword ptr [eax+0x8], ecx
0x00343e90    mov  ecx, dword ptr [ebp-0x4]
0x00343e93    mov  ecx, dword ptr [ecx+0x10]
0x00343e96    mov  ecx, dword ptr [ecx+0xc]
0x00343e99    mov  eax, dword ptr [ebp-0x20]
0x00343e9c    mov  dword ptr [eax+0xc], ecx
0x00343e9f    mov  ecx, dword ptr [ebp-0x4]
0x00343ea2    mov  ecx, dword ptr [ecx+0x10]
0x00343ea5    mov  ecx, dword ptr [ecx+0x10]
0x00343ea8    mov  eax, dword ptr [ebp-0x20]
0x00343eab    mov  dword ptr [eax+0x10], ecx
0x00343eae    mov  ecx, dword ptr [ebp-0x4]
0x00343eb1    mov  ecx, dword ptr [ecx+0x10]
0x00343eb4    mov  ecx, dword ptr [ecx+0x14]
0x00343eb7    mov  eax, dword ptr [ebp-0x20]
0x00343eba    mov  dword ptr [eax+0x14], ecx
0x00343ebd    mov  ecx, dword ptr [ebp-0x20]
0x00343ec0    mov  eax, dword ptr [ebp-0x14]
0x00343ec3    mov  add ecx, eax
0x00343ec5    mov  eax, dword ptr [ebp-0x20]
0x00343ec8    mov  dword ptr [eax+0x24], ecx
0x00343ecb    mov  ecx, dword ptr [ebp-0x4]
0x00343ece    mov  ecx, dword ptr [ecx+0x10]
0x00343ed1    mov  ecx, dword ptr [ecx+0x60]
0x00343ed4    mov  ecx, dword ptr [ecx+0x38]
0x00343ed7    mov  eax, dword ptr [ebp-0x20]
0x00343eda    mov  dword ptr [eax+0x18], ecx
0x00343edd    mov  ecx, dword ptr [ebp-0x4]
0x00343ee0    mov  ecx, dword ptr [ecx+0x10]
0x00343ee3    mov  ecx, dword ptr [ecx+0x60]
0x00343ee6    mov  ecx, dword ptr [ecx+0x40]
0x00343ee9    mov  eax, dword ptr [ebp-0x20]
0x00343eec    mov  dword ptr [eax+0x20], ecx
0x00343eef    mov  eax, dword ptr [ebp-0x20]
0x00343ef2    mov  ecx, dword ptr [ebp-0x18]
0x00343ef5    add  eax, ecx
0x00343ef7    mov  dword ptr [ebp-0x24], eax
0x00343efa    mov  eax, dword ptr [ebp-0x4]
0x00343efd    mov  eax, dword ptr [eax+0x4]
0x00343f00    mov  eax, dword ptr [eax+0x4]
0x00343f03    mov  dword ptr [ebp-0x1c], eax
0x00343f06    mov  eax, dword ptr [ebp-0x1c]
0x00343f09    cmp  dword ptr [eax], +0x0
0x00343f0c    jz   0x343f7c
0x00343f0e    mov  eax, eax
0x00343f10    mov  eax, dword ptr [ebp-0x1c]
0x00343f13    test byte ptr [eax+0x12], 0x1
0x00343f17    jz   0x343f6b
0x00343f19    mov  eax, dword ptr [ebp-0x1c]
0x00343f1c    mov  eax, dword ptr [eax]
0x00343f1e    call 0x33b668     // somSCGetMaxNDMethods
                                // eax = 0x00000027
0x00343f23    mov  dword ptr [ebp-0x28], eax
0x00343f26    push dword ptr [ebp-0x28]
0x00343f29    push dword ptr [ebp+0x8]
0x00343f2c    mov  ecx, dword ptr [ebp-0x1c]
0x00343f2f    mov  ecx, dword ptr [ecx]
0x00343f31    mov  edx, dword ptr [ebp+0x8]
0x00343f34    mov  eax, dword ptr [ebp-0x24]
0x00343f37    sub  esp, +0xc
0x00343f3a    call 0x342f84

0x00342f84    push ebp          (somXTab_setup)
0x00342f85    mov  ebp, esp
0x00342f87    sub  esp, +0x1c
0x00342f8a    mov  dword ptr [ebp+0x8], eax
0x00342f8d    mov  dword ptr [ebp+0xc], edx
0x00342f90    mov  dword ptr [ebp+0x10], ecx
0x00342f93    mov  eax, dword ptr [ebp+0x8]
0x00342f96    mov  ecx, dword ptr [ebp+0x10]
0x00342f99    mov  dword ptr [eax], ecx
0x00342f9b    cmp  dword ptr [ebp+0x10], +0x0
0x00342f9f    jz   0x342fb4
0x00342fa1    mov  edx, dword ptr [ebp+0x10]
0x00342fa4    mov  eax, dword ptr [ebp+0xc[
0x00342fa7    call 0x33b8e4     // somSCGetOffsetWithin
0x00342fac    mov  dword ptr [ebp-0x4], eax
0x00342faf    jmp  0x342fbb

0x00342fbb    mov  eax, dword ptr [ebp+0x8] (somXTab_setup)
0x00342fbe    mov  ecx, dword ptr [ebp-0x4]
0x00342fc1    mov  dword ptr [eax+0x4], ecx
0x00342fc4    mov  eax, dword ptr [ebp+0x8]
0x00342fc7    mov  ecx, dword ptr [ebp+0x14]
0x00342fca    mov  dword ptr [eax+0xc], ecx
0x00342fcd    mov  eax, dword ptr [ebp+0x8]
0x00342fd0    mov  ecx, dword ptr [ebp+0x18]
0x00342fd3    mov  dword ptr [eax+0x8], ecx
0x00342fd6    mov  eax, dword ptr [ebp+0x8]
0x00342fd9    mov  ecx, dword ptr [ebp+0xc]
0x00342fdc    mov  dword ptr [eax+0x10], ecx
0x00342fdf    mov  dword ptr [ebp-0x8], 0x0
0x00342fe6    mov  eax, dword ptr [ebp+0x18]
0x00342fe9    cmp  dword ptr [ebp-0x8], eax
0x00342fec    jnl  0x34301d
0x00342fee    mov  eax, eax
0x00342ff0    mov  eax, dword ptr [ebp+0x8]
0x00342ff3    mov  ecx, dword ptr [ebp-0x8]
0x00342ff6    mov  dword ptr [eax+ecx*0x8+0x14], 0x342eb0
0x00342ffe    mov  eax, dword ptr [ebp+0x8]
0x00343001    mov  ecx, dword ptr [ebp-0x8]
0x00343004    mov  edx, dword ptr [ebp+0x8]
0x00343007    mov  edx, dword ptr [edx+0x4]
0x0034300a    mov  dword ptr [eax+ecx*0x8+0x18], edx
0x0034300e    mov  eax, dword ptr [ebp-0x8]
0x00343011    inc  eax
0x00343012    mov  dword ptr [ebp-0x8], eax
0x00343015    mov  eax, dword ptr [ebp+0x18]
0x00343018    cmp  dword ptr [ebp-0x8], eax
0x0034301b    jl   0x342ff0

0x00342ff0    mov  eax, dword ptr [ebp+0x8] (somXTab_setup)
0x00342ff3    mov  ecx, dword ptr [ebp-0x8]
0x00342ff6    mov  dword ptr [eax+ecx*0x8+0x14], 0x342eb0
0x00342ffe    mov  eax, dword ptr [ebp+0x8]
0x00343001    mov  ecx, dword ptr [ebp-0x8]
0x00343004    mov  edx, dword ptr [ebp+0x8]
0x00343007    mov  edx, dword ptr [edx+0x4]
0x0034300a    mov  dword ptr [eax+ecx*0x8+0x18], edx
0x0034300e    mov  eax, dword ptr [ebp-0x8]
0x00343011    inc  eax
0x00343012    mov  dword ptr [ebp-0x8], eax
0x00343015    mov  eax, dword ptr [ebp+0x18]
0x00343018    cmp  dword ptr [ebp-0x8], eax
0x0034301b    jl   0x342ff0
...
0x0034301d    cmp  dword ptr ds:[+0x350b7c], +0x0 (somXTab_setup)
0x00343024    jz   0x343037

0x00343037    mov  eax, dword ptr [ebp+0x18]
0x0034303a    add  eax, +0xd
0x0034303d    mov  dword ptr [ebp-0xc], eax
0x00343040    mov  eax, dword ptr [ebp-0xc]
0x00343043    shl  eax, 0x3
0x00343046    add  eax, 0x14
0x00343049    call 0x347b0c     // somMalloc
                                // eax = 0x00ad8320
0x0034304e    mov  dword ptr [ebp-0x10], eax
0x00343051    cmp  dword ptr [ebp-0x10], +0x0
0x00343055    jnz  0x34305e

0x0034305e    mov  eax, dword ptr [ebp-0x10]
0x00343061    mov  dword ptr [eax], 0x0
0x00343067    mov  eax, dword ptr [ebp-0x10]
0x0034306a    mov  dword ptr [eax+0x4], 0x0
0x00343071    mov  eax, dword ptr [ebp-0x10]
0x00343074    mov  dword ptr [eax+0xc], 0x0
0x0034307b    mov  eax, dword ptr [ebp-0x10]
0x0034307e    mov  ecx, dword ptr [ebp-0xc]
0x00343081    mov  dword ptr [eax+0x8], ecx
0x00343084    mov  eax, dword ptr [ebp-0x10]
0x00343087    mov  dword ptr [eax+0x10], 0x0
0x0034308e    mov  dword ptr [ebp-0x8], 0x0
0x00343095    mov  eax, dword ptr [ebp-0xc]
0x00343098    cmp  dword ptr [ebp-0x8], eax
0x0034309b    jnl  0x3430cb
0x0034309d    lea  eax, dword ptr [eax]
0x003430a0    mov  eax, dword ptr [ebp-0x10]
0x003430a3    mov  ecx, dword ptr [ebp-0x8]
0x003430a6    mov  dword ptr [eax+ecx*8+0x14], 0x342eb0
0x003430ae    mov  eax, dword ptr [ebp-0x10]
0x003430b1    mov  ecx, dword ptr [ebp-0x8]
0x003430b4    mov  dword ptr [eax+ecx*0x8+0x18], 0x0
0x003430bc    mov  eax, dword ptr [ebp-0x8]
0x003430bf    inc  eax
0x003430c0    mov  dword ptr [ebp-0x8], eax
0x003430c3    mov  eax, dword ptr [ebp-0xc]
0x003430c6    cmp  dword ptr [ebp-0x8], eax
0x003430c9    jl   0x3430a0

0x003430a0    mov  eax, dword ptr [ebp-0x10] (somXTab_setup)
0x003430a3    mov  ecx, dword ptr [ebp-0x8]
0x003430a6    mov  dword ptr [eax+ecx*8+0x14], 0x342eb0
0x003430ae    mov  eax, dword ptr [ebp-0x10]
0x003430b1    mov  ecx, dword ptr [ebp-0x8]
0x003430b4    mov  dword ptr [eax+ecx*0x8+0x18], 0x0
0x003430bc    mov  eax, dword ptr [ebp-0x8]
0x003430bf    inc  eax
0x003430c0    mov  dword ptr [ebp-0x8], eax
0x003430c3    mov  eax, dword ptr [ebp-0xc]
0x003430c6    cmp  dword ptr [ebp-0x8], eax
0x003430c9    jl   0x3430a0
...
0x003430cb    push dword ptr ds:[+0x350cb4]
0x003430d1    call dword ptr ds:[+0x3a38fc] // SOMRequestMutexSem
0x003430d7    cmp  dword ptr ds:[+0x350b7c], +0x0
0x003430de    jz   0x3430ed

0x003430ed    mov  eax, dword ptr [ebp-0x10]
0x003430f0    mov  dword ptr ds:[+0x350b7c], eax
0x003430f5    mov  dword ptr [ebp-0x14], 0x0
0x003430fc    jmp  0x343107

0x00343107    push dword ptr ds:[+0x350cb4]
0x0034310d    call dword ptr ds:[+0x3a3900] // SOMReleaseMutexSem
0x00343113    cmp  dword ptr [ebp-0x14], +0x0
0x00343117    jz   0x343121

0x00343121    xor  eax, eax     (somXTab_setup)
0x00343123    add  esp, +0x8
0x00343126    leave
0x00343127    ret

.........
0x00344010    call 0x3495a4     (somSCInitMtab)

0x003495a4    push ebp          (somMakeDataThunk)
0x003495a5    mov  ebp, esp
0x003495a7    sub  esp, +0x10
0x003495aa    push edi
0x003495ab    push esi
0x003495ac    sub  esp, +0x4
0x003495af    mov  dword ptr [ebp+0x8], eax
0x003495b2    mov  dword ptr [ebp+0xc], edx
0x003495b5    mov  dword ptr [ebp-0x4], 0x0
0x003495bc    mov  dword ptr [ebp-0x8], 0x0
0x003495c3    mov  eax, 0x14
0x003495c8    call 0x347b0c     // somMalloc
                                // eax = 0x00ad84f0
0x003495cd    mov  dword ptr [ebp-0x4], eax
0x003495d0    cmp  dword ptr [ebp-0x4], +0x0
0x003495d4    jz   0x349690
0x003495da    mov  eax, dword ptr [ebp+0x8]
0x003495dd    mov  eax, dword ptr [eax]
0x003495df    call 0x33b708

0x0033b708    push ebp          (somSCGetClassThunkCode)
0x0033b709    mov  ebp, esp
0x0033b70b    sub  esp, +0x8
0x0033b70e    push esi
0x0033b70f    sub  esp, +0x4
0x0033b712    mov  dword ptr [ebp+0x8], eax
0x0033b715    cmp  dword ptr ds:[+0x350000], +0x0
0x0033b71c    jnz  0x33b72c
0x0033b71e    mov  eax, dword ptr [ebp+0x8]
0x0033b721    add  eax, +0x4
0x0033b724    mov  dword ptr [ebp-0x8], eax
0x0033b727    jmp  0x33b737

0x0033b737    mov  eax, dword ptr [ebp-0x8] (somSCGetClassThunkCode)
0x0033b73a    mov  dword ptr [ebp-0x4], eax
0x0033b73d    mov  eax, dword ptr [ebp-0x4]
0x0033b740    mov  eax, dword ptr [eax+0x10]
0x0033b743    cmp  dword ptr [eax+0x34], +0x0
0x0033b747    jnz  0x33b75e
0x0033b749    mov  esi, dword ptr [ebp-0x4]
0x0033b74c    mov  esi, dword ptr [esi+0x10]
0x0033b74f    mov  eax, dword ptr [ebp+0x8]
0x0033b752    call 0x3493d8

0x003493d8    push ebp          (somMakeClassThunk)
0x003493d9    mov  ebp, esp
0x003493db    sub  esp, +0x8
0x003493de    push edi
0x003493df    push esi
0x003493e0    sub  esp, +0x4
0x003493e3    mov  dword ptr [ebp+0x8], eax
0x003493e6    mov  eax, 0xc3
0x003493eb    call 0x347b0c     // somMalloc
                                // eax = 0x00ad8520
0x003493f0    mov  dword ptr [ebp-0x4], eax
0x003493f3    mov  edi, dword ptr [ebp-0x4]
0x003493f6    mov  esi, 0x34b46e
0x003493fb    mov  ecx, 0x30
0x00349400    rep  movsd
0x00349402    movsw
0x00349404    movsb
0x00349405    xor  eax, eax
0x00349407    cdq
0x00349408    idiv dword ptr ds:[+0x3a28ec]
0x0034940e    dec  edx
0x0034940f    shl  edx, 0x2
0x00349412    add  edx, +0x30
0x00349415    push edx
0x00349416    mov  eax, dword ptr [ebp-0x4]
0x00349419    add  eax, +0x8
0x0034941c    push eax
0x0034941d    call 0x34b588

0x0034b588    mov  edx, dword ptr [esp+0x4] (SOMObjectNewClass)
0x0034b58c    mov  eax, dword ptr [esp+0x8]
0x0034b590    xchg eax, dword ptr [edx]
0x0034b592    ret  0x8
....
0x003494d6    call 0x33b6b0     // somSCGetLPXtabOffset
....

0x0033b757    mov  ecx, eax     (somSCGetClassThunkCode)
....
0x0033b76c    ret

0x003495e4    mov  dword ptr [ebp-0x8], eax (somMakeDataThunk)
0x003495e7    cmp  dword ptr [ebp-0x8], +0x0
0x003495eb    jz   0x349690
0x003495f1    cmp  dword ptr [ebp+0xc], +0x0
0x003495f5    jz   0x349634

0x00349634    mov  eax, dword ptr [ebp-0x4]
0x00349637    add  eax, +0x4
0x0034963a    mov  dword ptr [ebp-0x10], eax
0x0034963d    mov  edi, dword ptr [ebp-0x4]
                                // edi = 0x00ad84f0
0x00349640    add  edi, +0x4
0x00349643    mov  esi, 0x34b454
0x00349648    mov  ecx, 0x3
0x0034964d    rep  movsd
0x0034964f    movsw
....
0x0034968f    ret

0x00344015    mov  ecx, eax     (somSCInitMtab)
....
0x00344022    ret

0x003346b8    mov  edx, 0x1     (somEnvironmentNew)
....
0x003346c6    call 0x3495a4     // somMakeDataThunk

0x003495a4    push ebp          (somMakeDataThunk)
....
0x003495c8    call 0x347b0c     // somMalloc
                                // eax = 0xad8600
....
0x003495df    call 0x33b708     // somSCGetClassThunkCode
                                // eax = 0x00ad8520
....
0x003346cb    mov  ecx, eax     (somEnvironmentNew)
....
0x0033470e    call 0x347c0c     // somCalloc
                                // eax = 0x00ad8630
....
0x00334800    call 0x347c0c     // somCalloc
                                // eax = 0x00ad86b0
....
0x003348b1    call 0x342c08     // somRegisterIds
....
0x003348e2    call 0x347b0c     // somMalloc
                                // eax = 0x00ad86e0
....
0x00334927    call 0x347b0c     // somMalloc
                                // eax = 0x00ad8700
....
0x00334a0b    call 0x347c0c     // somCalloc
                                // eax = 0x00ad8750
....
0x00334af8    call 0x343d54

0x00343d54    push ebp          (somSCInitMtab)
....
0x00343e53    call 0x33a310     // somcGetClassMem
                                // eax = 0x00ad875c
....
0x00343f3a    call 0x342f84     // somXTab_setup
....
0x00343f3a    call 0x342f84

0x00342f84    push ebp          (somXTab_setup)
....
0x00343049    call 0x347b0c     // somMalloc
                                // eax = 0x00ad8f60
....

0x00343f3f    add  esp, +0x14   (somSCInitMtab)
....
0x00344010    call 0x0x3495a4

0x003495a4    push ebp          (somMakeDataThunk)
....
0x003495c8    call 0x347b0c     // somMalloc
                                // eax = 0x00ad9220
....

0x00344015    mov  ecx, eax     (somSCInitMtab)
....
0x00344022    ret

0x00334afd    mov  edx, 0x1     (somEnvironmentNew)
....
0x00334b0e    call 0x3495a4

0x003495a4    push ebp          (somMakeDataThunk)
....
0x003495c8    call 0x347b0c     // somMalloc
                                // eax = 0x00ad9330
....

0x00334b13    mov ecx, eax      (somEnvironmentNew)
....
0x00334bb9    call 0x33555c

0x0033555c    push ebp          (somSCAddStaticMethod)
0x0033555d    mov  ebp, esp
0x0033555f    mov  dword ptr [ebp+0x8], eax
0x00335562    mov  dword ptr [ebp+0xc], edx
0x00335565    push 0x0
0x00335567    push 0x0
0x00335569    push 0x0
0x0033556b    push 0x0
0x0033556d    push dword ptr [ebp+0xc]
0x00335570    push dword ptr [ebp+0x8]
0x00335573    call 0x3374a8

0x003374a8    push ebp          (somSCInitializeClass)
0x003374a9    mov  ebp, esp
0x003374ab    push dword ptr [ebp+0x1c]
0x003374ae    push dword ptr [ebp+0x18]
0x003374b1    push dword ptr [ebp+0x14]
0x003374b4    push dword ptr [ebp+0x10]
0x003374b7    mov  ecx, dword ptr [ebp+0xc]
0x003374ba    xor  edx, edx
0x003374bc    mov  eax, dword ptr [ebp+0x8]
0x003374bf    sub  esp, +0xc
0x003374c2    call 0x3443cc

0x003443cc    push ebp          (somAddNDMethod)
0x003443cd    mov  ebp, esp
0x003443cf    sub  esp, +0x30
0x003443d2    push ebx
0x003443d3    sub  esp, +0x8
0x003443d6    mov  dword ptr [ebp+0x8], eax
0x003443d9    mov  dword ptr [ebp+0xc], edx
0x003443dc    mov  dword ptr [ebp+0x10], ecx
0x003443df    push dword ptr [ebp+0x8]
0x003443e2    mov  ecx, dword ptr ds:[+0x3a0308]
                                // ecx = 0x00ad9334
0x003443e8    call ecx

(Access Violaation!!!)
0x00ad9334    mov  eax, dword ptr [esp+0x4]
0x00ad9338    add  eax, +0x4
0x00ad933d    ret  0x4


Memory allocation:


somEnvironmentNew -> somMakeDataThunk
0x003495c8    call 0x347b0c     // somMalloc
                                // eax = 0x00ad9330



somws35i.dll:

0x00421540    calloc
0x00426e80    _ucalloc
0x0042ae64    _umalloc
0x004270b9    _uaddmem


























