Function at 0x401e90
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
push 0xffffffffffffffff
push 0x68d0e9
mov eax, dword fs:[0]
push eax
sub esp, 0x2a4
push ebx
push ebp
push esi
push edi
mov eax, dword [0x70c004]
xor eax, esp
push eax
lea eax, [esp + 0x2b8]
mov dword fs:[0], eax
mov esi, ecx
push 9
mov ebp, 0xf
xor edi, edi
push str.DebugMode
lea ecx, [esp + 0x3c]
mov dword [esp + 0x54], ebp
mov dword [esp + 0x50], edi
mov byte [esp + 0x40], 0
call fcn.004051a0
lea eax, [esp + 0x34]
push eax
mov dword [esp + 0x2c4], edi
call fcn.0046f7b8
mov ecx, eax
call fcn.00470539
test eax, eax
mov ebx, 0x10
setne byte [esp + 0x2f]
mov dword [esp + 0x2c0], 0xffffffff
cmp dword [esp + 0x4c], ebx
jb 0x401f2b
mov ecx, dword [esp + 0x38]
push ecx
call fcn.0045c06d
add esp, 4
push 0xd
push str.SYSTEM_SELECT
lea ecx, [esp + 0x3c]
mov dword [esp + 0x54], ebp
mov dword [esp + 0x50], edi
mov byte [esp + 0x40], 0
call fcn.004051a0
lea edx, [esp + 0x34]
push edx
lea eax, [esp + 0xa0]
push eax
mov dword [esp + 0x2c8], 1
call fcn.0046f7b8
mov ecx, eax
call fcn.004704b6
mov byte [esp + 0x2c0], 2
mov edx, dword [esi + 0x801a0]
lea ecx, [esi + 0x801a0]
push eax
mov eax, dword [edx]
call eax
cmp dword [esp + 0xb4], ebx
jb 0x401f9e
mov ecx, dword [esp + 0xa0]
push ecx
call fcn.0045c06d
add esp, 4
mov dword [esp + 0x2c0], 0xffffffff
mov dword [esp + 0xb4], ebp
mov dword [esp + 0xb0], edi
mov byte [esp + 0xa0], 0
cmp dword [esp + 0x4c], ebx
jb 0x401fd2
mov edx, dword [esp + 0x38]
push edx
call fcn.0045c06d
add esp, 4
push 0xd
push str.SYSTEM_CANCEL
lea ecx, [esp + 0x3c]
mov dword [esp + 0x54], ebp
mov dword [esp + 0x50], edi
mov byte [esp + 0x40], 0
call fcn.004051a0
lea eax, [esp + 0x34]
push eax
lea ecx, [esp + 0xa0]
push ecx
mov dword [esp + 0x2c8], 3
call fcn.0046f7b8
mov ecx, eax
call fcn.004704b6
mov byte [esp + 0x2c0], 4
mov edx, dword [esi + 0x80240]
lea ebp, [esi + 0x80240]
push eax
mov eax, dword [edx]
mov ecx, ebp
call eax
cmp dword [esp + 0xb4], ebx
jb 0x402047
mov ecx, dword [esp + 0xa0]
push ecx
call fcn.0045c06d
add esp, 4
mov dword [esp + 0x2c0], 0xffffffff
mov dword [esp + 0xb4], 0xf
mov dword [esp + 0xb0], edi
mov byte [esp + 0xa0], 0
cmp dword [esp + 0x4c], ebx
jb 0x40207f
mov edx, dword [esp + 0x38]
push edx
call fcn.0045c06d
add esp, 4
push ebx
push str.SYSTEM_INTERSECT
lea ecx, [esp + 0x3c]
mov dword [esp + 0x54], 0xf
mov dword [esp + 0x50], edi
mov byte [esp + 0x40], 0
call fcn.004051a0
lea eax, [esp + 0x34]
push eax
lea ecx, [esp + 0xa0]
push ecx
mov dword [esp + 0x2c8], 5
call fcn.0046f7b8
mov ecx, eax
call fcn.004704b6
mov byte [esp + 0x2c0], 6
mov edx, dword [esi + 0x802e0]
lea ecx, [esi + 0x802e0]
push eax
mov eax, dword [edx]
call eax
cmp dword [esp + 0xb4], ebx
jb 0x4020f5
mov ecx, dword [esp + 0xa0]
push ecx
call fcn.0045c06d
add esp, 4
mov dword [esp + 0x2c0], 0xffffffff
mov dword [esp + 0xb4], 0xf
mov dword [esp + 0xb0], edi
mov byte [esp + 0xa0], 0
cmp dword [esp + 0x4c], ebx
jb 0x40212d
mov edx, dword [esp + 0x38]
push edx
call fcn.0045c06d
add esp, 4
mov edi, dword [esi + 0x801a0]
lea ebx, [esi + 0x1f90]
push 2
mov ecx, ebx
add edi, 0x68
call fcn.0046855c
fmul qword [0x6cfcc0]
call fcn.0064b350
push eax
mov eax, dword [edi]
lea ecx, [esi + 0x801a0]
call eax
mov edi, dword [ebp]
push 2
mov ecx, ebx
add edi, 0x68
call fcn.0046855c
fmul qword [0x6cfda0]
call fcn.0064b350
mov edx, dword [edi]
push eax
mov ecx, ebp
call edx
mov edi, dword [esi + 0x802e0]
lea ebp, [esi + 0x802e0]
push 2
mov ecx, ebx
add edi, 0x68
call fcn.0046855c
fmul qword [0x6cfda0]
call fcn.0064b350
push eax
mov eax, dword [edi]
mov ecx, ebp
call eax
push 0x11
push str.sys_sys_title.ogg
lea ecx, [esp + 0x3c]
mov dword [esp + 0x54], 0xf
mov dword [esp + 0x50], 0
mov byte [esp + 0x40], 0
call fcn.004051a0
mov dword [esp + 0x2c0], 7
mov edx, dword [esi + 0xc8]
mov edx, dword [edx]
lea edi, [esi + 0xc8]
lea eax, [esp + 0x34]
push eax
mov ecx, edi
call edx
mov dword [esp + 0x2c0], 0xffffffff
cmp dword [esp + 0x4c], 0x10
jb 0x40220c
mov eax, dword [esp + 0x38]
push eax
call fcn.0045c06d
add esp, 4
mov ebp, dword [edi]
push 2
mov ecx, ebx
add ebp, 0x68
call fcn.0046855c
fmul qword [0x6cfcc0]
call fcn.0064b350
mov edx, dword [ebp]
push eax
mov ecx, edi
call edx
cmp dword [esi + 0x205c], 0
jge 0x402240
mov dword [esi + 0x205c], 0
cmp dword [esi + 0x1fd4], 0
mov ecx, 0xc
jne 0x402257
cmp dword [esi + 0x2f44], 0
jne 0x4022ab
mov eax, dword [esi + 0x1f94]
cmp eax, 0x20
je 0x402267
cmp eax, 0x10
jne 0x402271
mov dword [esi + 0x1f94], 0
mov eax, dword [esi + 0x2064]
mov dword [esi + 0x80940], eax
mov eax, esi
mov dword [esi + 0x80938], ecx
mov dword [esi + 0x2064], 1
mov dword [esi + 0x2068], 2
mov dword [esi + 0x205c], ecx
mov byte [esi + 0x80944], 1
call fcn.00403620
xor eax, eax
mov dword [esi + 0x2f84], eax
mov dword [esi + 0x2f88], eax
mov dword [esi + 0x2f8c], eax
mov dword [esi + 0x2f90], eax
mov dword [esi + 0x2f94], eax
mov dword [esi + 0x2f98], eax
lea eax, [esp + 0x54]
push eax
call fcn.00405c40
mov edi, dword [0x694370]
push 0
call edi
push 1
mov ebp, eax
call edi
cmp ebp, 0x500
jl 0x4022fe
cmp eax, 0x2d0
jl 0x4022fe
mov al, 1
jmp 0x402300
xor al, al
test al, al
sete bl
mov dword [esp + 0x54], vtable.CChangeWindowManager.0
lea ecx, [esp + 0x78]
mov dword [esp + 0x2c0], 8
call fcn.0047304d
mov dword [esp + 0x2c0], 0xffffffff
mov ecx, dword [esp + 0x6c]
mov eax, dword [ecx]
mov dword [ecx], ecx
mov ecx, dword [esp + 0x6c]
mov dword [ecx + 4], ecx
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x70], 0
cmp eax, ecx
je 0x402365
jmp 0x402350
mov ebp, dword [eax]
push eax
call fcn.0045c06d
mov ecx, dword [esp + 0x70]
add esp, 4
mov eax, ebp
cmp ebp, ecx
jne 0x402350
push ecx
call fcn.0045c06d
mov ecx, dword [esp + 0x5c]
add esp, 4
push ecx
mov dword [esp + 0x70], 0
call fcn.0045c06d
add esp, 4
test bl, bl
je 0x402391
mov dword [esi + 0x2f84], 1
lea edx, [esp + 0x54]
push edx
call fcn.00405c40
push 0
call edi
push 1
mov ebp, eax
call edi
cmp ebp, 0x400
jl 0x4023b8
cmp eax, 0x240
jl 0x4023b8
mov al, 1
jmp 0x4023ba
xor al, al
test al, al
sete bl
mov dword [esp + 0x54], vtable.CChangeWindowManager.0
lea ecx, [esp + 0x78]
mov dword [esp + 0x2c0], 9
call fcn.0047304d
mov dword [esp + 0x2c0], 0xffffffff
mov ecx, dword [esp + 0x6c]
mov eax, dword [ecx]
mov dword [ecx], ecx
mov ecx, dword [esp + 0x6c]
mov dword [ecx + 4], ecx
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x70], 0
cmp eax, ecx
je 0x40241a
mov ebp, dword [eax]
push eax
call fcn.0045c06d
mov ecx, dword [esp + 0x70]
add esp, 4
mov eax, ebp
cmp ebp, ecx
jne 0x402405
push ecx
call fcn.0045c06d
mov eax, dword [esp + 0x5c]
add esp, 4
push eax
mov dword [esp + 0x70], 0
call fcn.0045c06d
add esp, 4
test bl, bl
je 0x402446
mov dword [esi + 0x2f88], 1
lea ecx, [esp + 0x54]
push ecx
call fcn.00405c40
push 0
call edi
push 1
mov ebp, eax
call edi
cmp ebp, 0x320
jl 0x40246d
cmp eax, 0x1c2
jl 0x40246d
mov al, 1
jmp 0x40246f
xor al, al
test al, al
sete bl
mov dword [esp + 0x54], vtable.CChangeWindowManager.0
lea ecx, [esp + 0x78]
mov dword [esp + 0x2c0], 0xa
call fcn.0047304d
mov dword [esp + 0x2c0], 0xffffffff
mov ecx, dword [esp + 0x6c]
mov eax, dword [ecx]
mov dword [ecx], ecx
mov ecx, dword [esp + 0x6c]
mov dword [ecx + 4], ecx
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x70], 0
cmp eax, ecx
je 0x4024d5
lea ebx, [ebx]
mov ebp, dword [eax]
push eax
call fcn.0045c06d
mov ecx, dword [esp + 0x70]
add esp, 4
mov eax, ebp
cmp ebp, ecx
jne 0x4024c0
push ecx
call fcn.0045c06d
mov edx, dword [esp + 0x5c]
add esp, 4
push edx
mov dword [esp + 0x70], 0
call fcn.0045c06d
add esp, 4
test bl, bl
je 0x402501
mov dword [esi + 0x2f8c], 1
lea eax, [esp + 0x54]
push eax
call fcn.00405c40
push 0
call edi
push 1
mov ebp, eax
call edi
cmp ebp, 0x500
jl 0x402528
cmp eax, 0x3c0
jl 0x402528
mov al, 1
jmp 0x40252a
xor al, al
test al, al
sete bl
mov dword [esp + 0x54], vtable.CChangeWindowManager.0
lea ecx, [esp + 0x78]
mov dword [esp + 0x2c0], 0xb
call fcn.0047304d
mov dword [esp + 0x2c0], 0xffffffff
mov ecx, dword [esp + 0x6c]
mov eax, dword [ecx]
mov dword [ecx], ecx
mov ecx, dword [esp + 0x6c]
mov dword [ecx + 4], ecx
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x70], 0
cmp eax, ecx
je 0x40258a
mov ebp, dword [eax]
push eax
call fcn.0045c06d
mov ecx, dword [esp + 0x70]
add esp, 4
mov eax, ebp
cmp ebp, ecx
jne 0x402575
push ecx
call fcn.0045c06d
mov ecx, dword [esp + 0x5c]
add esp, 4
push ecx
mov dword [esp + 0x70], 0
call fcn.0045c06d
add esp, 4
test bl, bl
je 0x4025b6
mov dword [esi + 0x2f90], 1
lea edx, [esp + 0x54]
push edx
call fcn.00405c40
push 0
call edi
push 1
mov ebp, eax
call edi
cmp ebp, 0x400
jl 0x4025dd
cmp eax, 0x300
jl 0x4025dd
mov al, 1
jmp 0x4025df
xor al, al
test al, al
sete bl
mov dword [esp + 0x54], vtable.CChangeWindowManager.0
lea ecx, [esp + 0x78]
mov dword [esp + 0x2c0], 0xc
call fcn.0047304d
mov dword [esp + 0x2c0], 0xffffffff
mov ecx, dword [esp + 0x6c]
mov eax, dword [ecx]
mov dword [ecx], ecx
mov ecx, dword [esp + 0x6c]
mov dword [ecx + 4], ecx
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x70], 0
cmp eax, ecx
je 0x402645
lea ebx, [ebx]
mov ebp, dword [eax]
push eax
call fcn.0045c06d
mov ecx, dword [esp + 0x70]
add esp, 4
mov eax, ebp
cmp ebp, ecx
jne 0x402630
push ecx
call fcn.0045c06d
mov eax, dword [esp + 0x5c]
add esp, 4
push eax
mov dword [esp + 0x70], 0
call fcn.0045c06d
add esp, 4
test bl, bl
je 0x402671
mov dword [esi + 0x2f94], 1
lea ecx, [esp + 0x54]
push ecx
call fcn.00405c40
push 0
call edi
push 1
mov ebp, eax
call edi
cmp ebp, 0x320
jl 0x402698
cmp eax, 0x258
jl 0x402698
mov al, 1
jmp 0x40269a
xor al, al
test al, al
sete bl
mov dword [esp + 0x54], vtable.CChangeWindowManager.0
lea ecx, [esp + 0x78]
mov dword [esp + 0x2c0], 0xd
call fcn.0047304d
mov dword [esp + 0x2c0], 0xffffffff
mov ecx, dword [esp + 0x6c]
mov eax, dword [ecx]
mov dword [ecx], ecx
mov ecx, dword [esp + 0x6c]
mov dword [ecx + 4], ecx
mov ecx, dword [esp + 0x6c]
xor ebp, ebp
mov dword [esp + 0x70], ebp
cmp eax, ecx
je 0x4026f8
mov edi, dword [eax]
push eax
call fcn.0045c06d
mov ecx, dword [esp + 0x70]
add esp, 4
mov eax, edi
cmp edi, ecx
jne 0x4026e3
push ecx
call fcn.0045c06d
mov edx, dword [esp + 0x5c]
add esp, 4
push edx
mov dword [esp + 0x70], ebp
call fcn.0045c06d
add esp, 4
test bl, bl
je 0x402720
mov dword [esi + 0x2f98], 1
call fcn.00403330
cmp byte [esp + 0x2f], 0
mov dword [esp + 0x30], ebp
je 0x402762
push 0x11c
call fcn.0045c111
add esp, 4
mov dword [esp + 0x98], eax
mov dword [esp + 0x2c0], 0xe
cmp eax, ebp
je 0x40275c
mov ecx, eax
call fcn.00471fc5
jmp 0x40275e
xor eax, eax
mov dword [esp + 0x30], eax
mov dword [esp + 0xc0], 0x6bf08c
mov dword [esp + 0xc4], 0x6bf09c
mov dword [esp + 0x2c0], 0xf
mov dword [esp + 0xbc], vtable.NekoGameSDK4th::Base::Graphics::Graphics3D::CTrans3DFactory.0
mov byte [esp + 0x2c0], 0x10
lea ecx, [esp + 0xdc]
mov dword [esp + 0xc8], esi
call fcn.00463ec4
lea eax, [esp + 0xc0]
push eax
lea ecx, [esp + 0xe0]
mov byte [esp + 0x2c4], 0x11
call fcn.00465550
lea ecx, [esp + 0xbc]
push ecx
lea ecx, [esp + 0xe0]
call fcn.00463520
lea edx, [esp + 0xdc]
mov dword [esi + 0x1f8c], edx
call fcn.00404b30
mov ecx, eax
call fcn.00473195
mov ecx, dword [esi + 0x1f8c]
test al, al
jne 0x402820
cmp dword [esi + 0x2f44], ebp
jne 0x402810
push 2
call fcn.0046408a
push ebp
push 1
jmp 0x402829
cmp dword [esi + 0x1fd4], ebp
je 0x40281c
push 2
jmp 0x402822
push 3
jmp 0x402822
push 1
call fcn.0046408a
push ebp
push ebp
mov ecx, dword [esi + 0x1f8c]
call fcn.0046423a
mov eax, dword [esi]
mov edx, dword [eax + 0x1c]
mov ecx, esi
call edx
push eax
call dword [0x694360]
mov eax, dword [esi]
mov edx, dword [eax + 0x10]
mov ecx, esi
call edx
test al, al
je 0x402f97
lea ebx, [esi + 0x80918]
jmp 0x402860
mov eax, dword [esi]
mov edx, dword [eax + 0x18]
mov ecx, esi
call edx
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x18]
call eax
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x4c]
call eax
test al, al
jne 0x40290c
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
mov ecx, esi
call eax
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x18]
call eax
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x4c]
call eax
test al, al
jne 0x40290c
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
mov ecx, esi
call eax
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x18]
call eax
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x4c]
call eax
test al, al
jne 0x4028d3
cmp dword [esi + 0x203c], 0
jne 0x40290c
cmp dword [esi + 0x237c], 0
jne 0x40290c
mov edx, dword [esi + 0x394]
mov eax, dword [edx + 0x48]
lea ecx, [esi + 0x394]
push 1
call eax
mov edx, dword [esi + 0x38c]
mov eax, dword [edx + 0x14]
lea ecx, [esi + 0x38c]
push 1
call eax
mov edx, dword [esi + 0x39c]
mov eax, dword [edx + 0x20]
lea ecx, [esi + 0x39c]
push 1
call eax
cmp byte [esi + 0x80944], 0
je 0x40291c
mov eax, esi
call fcn.00403620
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
mov ecx, esi
call eax
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x18]
call eax
mov edx, dword [eax]
mov edi, dword [esi + 0x1f94]
mov ecx, eax
mov eax, dword [edx + 0x7c]
call eax
cmp edi, eax
je 0x402967
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
mov ecx, esi
call eax
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x18]
call eax
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x7c]
call eax
mov dword [esi + 0x1f94], eax
call fcn.00403330
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
mov ecx, esi
call eax
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x18]
call eax
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x50]
call eax
test al, al
jne 0x402aed
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
mov ecx, esi
call eax
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x18]
call eax
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x78]
call eax
test al, al
jne 0x402aed
lea ecx, [esp + 0xcc]
push ecx
call fcn.004718d6
push eax
call dword [0x694388]
mov eax, dword [esi + 0x205c]
xor edi, edi
xor ebp, ebp
cmp eax, 0xc
ja case.0x4029d7.3
movzx edx, byte [eax + 0x402ff8]
jmp dword [edx*4 + 0x402fdc]
mov edi, 0x500
mov ebp, 0x2d0
jmp case.0x4029d7.3
mov edi, 0x400
mov ebp, 0x240
jmp case.0x4029d7.3
mov ebp, 0x1c2
jmp 0x402a1a
mov edi, 0x500
mov ebp, 0x3c0
jmp case.0x4029d7.3
mov edi, 0x400
mov ebp, 0x300
jmp case.0x4029d7.3
mov ebp, 0x258
mov edi, 0x320
mov eax, dword [esp + 0xd4]
sub eax, dword [esp + 0xcc]
cmp eax, edi
jne 0x402a47
mov ecx, dword [esp + 0xd8]
sub ecx, dword [esp + 0xd0]
cmp ecx, ebp
je 0x402aed
push 0x6befac
call fcn.00404ac0
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
add esp, 4
mov ecx, esi
call eax
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x18]
call eax
mov edx, dword [eax]
push 0
mov ecx, eax
mov eax, dword [edx + 0x20]
push 0
call eax
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
mov ecx, esi
call eax
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x18]
call eax
mov edx, dword [eax]
push ebp
mov ecx, eax
mov eax, dword [edx + 0x24]
push edi
call eax
cmp dword [esi + 0x2064], 0
push 0
sete cl
mov byte [esp + 0xbc], cl
mov edx, dword [esp + 0xbc]
push edx
mov ecx, ebx
call fcn.0046f4f8
mov ecx, eax
call fcn.0047892b
mov eax, dword [ebx]
mov edx, dword [eax + 0x18]
mov ecx, ebx
call edx
mov ecx, dword [esi + 0x1f8c]
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
call edx
mov ecx, dword [esi + 0x80118]
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
call edx
mov ecx, dword [esi + 0x8011c]
test ecx, ecx
je 0x402aed
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
call edx
mov eax, dword [esi]
mov edx, dword [eax + 0x18]
mov ecx, esi
call edx
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x18]
call eax
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x4c]
call eax
test al, al
jne 0x402b45
cmp dword [esi + 0x203c], 0
jne 0x402b45
cmp dword [esi + 0x237c], 0
jne 0x402b45
mov edx, dword [esi + 0x1c]
mov eax, dword [edx + 0x38]
lea edi, [esi + 0x1c]
mov ecx, edi
call eax
test al, al
je 0x402b74
mov edx, dword [edi]
mov eax, dword [edx + 0x1c]
mov ecx, edi
call eax
fstp qword [esi + 0xc0]
mov edx, dword [edi]
mov eax, dword [edx + 0x10]
jmp 0x402b70
mov edx, dword [esi + 0x1c]
mov eax, dword [edx + 0x3c]
lea edi, [esi + 0x1c]
mov ecx, edi
call eax
test al, al
je 0x402b74
mov edx, dword [edi]
fld qword [esi + 0xc0]
mov eax, dword [edx + 0x18]
sub esp, 8
mov ecx, edi
fstp qword [esp]
call eax
mov edx, dword [edi]
mov eax, dword [edx + 0x14]
mov ecx, edi
call eax
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
mov ecx, esi
call eax
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x18]
call eax
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x4c]
call eax
test al, al
jne 0x402bcc
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
mov ecx, esi
call eax
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x18]
call eax
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x4c]
call eax
test al, al
jne 0x402e2c
cmp dword [esi + 0x203c], 0
jne 0x402bcc
cmp dword [esi + 0x237c], 0
je 0x402e2c
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
mov ecx, esi
call eax
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x18]
call eax
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x50]
call eax
test al, al
jne 0x402e2c
mov ecx, dword [esp + 0x30]
test ecx, ecx
je 0x402bfc
call fcn.00471b00
mov eax, dword [esi + 0x80118]
mov eax, dword [eax + 0xf8]
mov edi, 1
cmp dword [esi + 0x22e4], edi
sete cl
movzx edx, cl
push edx
push edi
mov ecx, eax
call fcn.00479025
mov eax, dword [esi + 0x8011c]
test eax, eax
je 0x402c47
cmp dword [esi + 0x22e4], edi
mov eax, dword [eax + 0xf8]
sete cl
movzx edx, cl
push edx
push edi
mov ecx, eax
call fcn.00479025
call fcn.00479b69
mov eax, dword [esi + 0x38c]
mov edx, dword [eax]
lea ecx, [esi + 0x38c]
call edx
mov eax, dword [esi + 0x394]
mov edx, dword [eax]
lea ecx, [esi + 0x394]
call edx
mov eax, dword [esi + 0x39c]
mov edx, dword [eax]
lea ecx, [esi + 0x39c]
call edx
mov eax, dword [ebx]
mov edx, dword [eax + 0x14]
mov ecx, ebx
call edx
test al, al
je 0x402cc1
mov eax, dword [ebx]
mov edx, dword [eax + 0x18]
mov ecx, ebx
call edx
test al, al
je 0x402cc1
mov ecx, dword [esi + 0x1f8c]
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
call edx
mov ecx, dword [esi + 0x80118]
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
call edx
mov ecx, dword [esi + 0x8011c]
test ecx, ecx
je 0x402cc1
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
call edx
mov eax, dword [esi + 0x80388]
mov edx, dword [eax + 4]
lea ecx, [esi + 0x80388]
call edx
lea ebp, [esi + 0x80384]
mov ecx, ebp
call fcn.0046e242
test al, al
je 0x402cec
push 0
mov ecx, ebp
call fcn.0046ec48
mov eax, dword [esi + 0x2068]
sub eax, 0
je 0x402d09
sub eax, edi
je 0x402d02
mov edi, 0xc
jmp 0x402d0e
mov edi, 0xe
jmp 0x402d0e
mov edi, 0x12
mov eax, dword [esi + 0x1f94]
mov dword [esp + 0x50], edi
cmp eax, 0x10
je 0x402d22
cmp eax, 0x20
jne 0x402d49
mov ecx, ebx
call fcn.0046f4f8
mov ecx, eax
call fcn.004741a6
fstp dword [esp + 0x98]
fild dword [esp + 0x50]
fmul dword [esp + 0x98]
call fcn.0064b350
mov edi, eax
mov ecx, ebp
call fcn.0046e21c
push 0
push edi
mov ecx, eax
call fcn.00479e28
mov ecx, ebp
call fcn.0046e227
push 0
push edi
mov ecx, eax
call fcn.00479e28
push edi
mov ecx, ebp
call fcn.0046e235
mov eax, dword [esi + 0x36c]
mov edx, dword [eax]
lea edi, [esi + 0x36c]
mov ecx, edi
call edx
mov ecx, dword [esi + 0x1f8c]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
call edx
mov eax, dword [edi]
mov edx, dword [eax + 4]
mov ecx, edi
call edx
mov eax, dword [edi]
mov edx, dword [eax + 0xc]
mov ecx, edi
call edx
test al, al
jne 0x402e08
mov eax, dword [ebx]
mov edx, dword [eax + 0x14]
mov ecx, ebx
call edx
test al, al
jne 0x402e08
mov eax, dword [ebx]
mov edx, dword [eax + 4]
mov ecx, ebx
call edx
test al, al
je 0x402e08
mov eax, dword [ebx]
mov edx, dword [eax]
push 0xff000000
mov ecx, ebx
call edx
mov ecx, dword [esi + 0x1f8c]
mov eax, dword [ecx]
mov edx, dword [eax + 8]
call edx
mov ebp, dword [esp + 0x30]
test ebp, ebp
je 0x402deb
mov ecx, ebp
call fcn.00471cc7
mov eax, dword [ebx]
mov edx, dword [eax + 8]
mov ecx, ebx
call edx
mov eax, dword [ebx]
mov edx, dword [eax + 0x10]
mov ecx, ebx
call edx
test ebp, ebp
je 0x402e08
mov ecx, ebp
call fcn.00471b0b
mov ecx, ebx
call fcn.0046f4f8
mov ecx, eax
call fcn.0047418a
test al, al
jne 0x402f86
mov eax, dword [edi]
mov edx, dword [eax + 8]
mov ecx, edi
call edx
jmp 0x402f86
mov eax, dword [esi + 0x80118]
mov eax, dword [eax + 0xf8]
mov edi, 1
cmp dword [esi + 0x22e4], edi
sete cl
movzx edx, cl
push edx
push 0
mov ecx, eax
call fcn.00479025
mov eax, dword [esi + 0x8011c]
test eax, eax
je 0x402e79
cmp dword [esi + 0x22e4], edi
mov eax, dword [eax + 0xf8]
sete cl
movzx edx, cl
push edx
push 0
mov ecx, eax
call fcn.00479025
call fcn.00479b98
mov eax, dword [esi + 0x38c]
mov edx, dword [eax + 0x18]
lea ecx, [esi + 0x38c]
push 2
call edx
mov eax, dword [esi + 0x394]
mov edx, dword [eax + 0x4c]
lea ecx, [esi + 0x394]
push 2
call edx
mov eax, dword [esi + 0x39c]
mov edx, dword [eax + 0x24]
lea ecx, [esi + 0x39c]
push 2
call edx
mov eax, dword [ebx]
mov edx, dword [eax + 0x14]
mov ecx, ebx
call edx
test al, al
je 0x402f1b
mov eax, dword [esi]
mov edx, dword [eax + 0x18]
mov ecx, esi
call edx
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x18]
call eax
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x50]
call eax
test al, al
jne 0x402f1b
mov edx, dword [ebx]
mov eax, dword [edx + 0x18]
mov ecx, ebx
call eax
test al, al
je 0x402f1b
mov ecx, dword [esi + 0x1f8c]
mov edx, dword [ecx]
mov eax, dword [edx + 0xc]
call eax
mov ecx, dword [esi + 0x80118]
mov edx, dword [ecx]
mov eax, dword [edx + 0xc]
call eax
mov ecx, dword [esi + 0x8011c]
test ecx, ecx
je 0x402f1b
mov edx, dword [ecx]
mov eax, dword [edx + 0xc]
call eax
mov edx, dword [esi + 0x36c]
mov eax, dword [edx + 0xc]
lea edi, [esi + 0x36c]
mov ecx, edi
call eax
test al, al
jne 0x402f6b
mov edx, dword [ebx]
mov eax, dword [edx + 0x14]
mov ecx, ebx
call eax
test al, al
jne 0x402f6b
mov edx, dword [ebx]
mov eax, dword [edx + 4]
mov ecx, ebx
call eax
test al, al
je 0x402f6b
mov ecx, dword [esi + 0x1f8c]
mov edx, dword [ecx]
mov eax, dword [edx + 8]
call eax
mov edx, dword [ebx]
mov eax, dword [edx + 8]
mov ecx, ebx
call eax
mov edx, dword [ebx]
mov eax, dword [edx + 0x10]
mov ecx, ebx
call eax
mov ecx, ebx
call fcn.0046f4f8
mov ecx, eax
call fcn.0047418a
test al, al
jne 0x402f86
mov edx, dword [edi]
mov eax, dword [edx + 8]
mov ecx, edi
call eax
mov edx, dword [esi]
mov eax, dword [edx + 0x10]
mov ecx, esi
call eax
test al, al
jne 0x402860
lea ecx, [esp + 0xdc]
mov dword [esi + 0x1f8c], 0
mov byte [esp + 0x2c0], 0x10
call fcn.00463f38
mov ecx, dword [esp + 0x30]
test ecx, ecx
je 0x402fc5
mov edx, dword [ecx]
mov eax, dword [edx]
push 1
call eax
mov ecx, dword [esp + 0x2b8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret