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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
push ebx
push esi
mov esi, dword [ebp + 8]
mov eax, dword [esi]
push edi
mov ebx, ecx
test eax, eax
jne 0x423b2f
call fcn.005cbe1d
mov eax, dword [esi]
test eax, eax
je 0x423b33
mov eax, dword [eax]
jmp 0x423b35
xor eax, eax
mov ecx, dword [esi + 4]
cmp ecx, dword [eax + 0x14]
jne 0x423b42
call fcn.005cbe1d
mov edx, dword [esi + 4]
mov esi, dword [edx + 8]
mov ecx, esi
call fcn.00409640
mov edi, dword [esi + 0x74]
fld dword [edi + 0xc]
push ecx
mov ecx, dword [ebx + 0xc]
fstp dword [esp]
push esi
mov dword [ebp - 0x14], edi
call fcn.00407510
movzx eax, byte [esi + 0x78]
mov ecx, dword [ebx + 0xc]
push 0
push eax
push esi
push edi
call fcn.00407720
sub esp, 8
fld dword [esi + 0x20]
mov ecx, esi
fstp dword [esp + 4]
fld dword [esi + 0x1c]
fstp dword [esp]
call fcn.004020a0
call fcn.004020c0
call fcn.00409600
mov edi, eax
test edi, edi
je 0x423c58
fld dword [esi + 0x8c]
mov ecx, esi
fstp dword [ebp - 8]
fld dword [edi + 0xc]
fstp dword [ebp - 0xc]
call fcn.004017d0
fld dword [esi + 0x8c]
mov ecx, edi
mov edx, eax
call fcn.004017d0
add eax, edx
mov dword [ebp - 4], eax
fild dword [ebp - 4]
neg edx
fld st(1)
fmulp st(2)
fmulp st(1)
fstp dword [ebp - 4]
fld dword [ebp - 8]
fld1
fsubrp st(1)
fstp dword [ebp - 8]
fld dword [ebp - 8]
mov dword [ebp - 8], edx
fimul dword [ebp - 8]
fmul qword [0x606908]
call fcn.005cb710
push eax
push 1
mov ecx, esi
call fcn.00409600
mov ecx, dword [ebx + 0xc]
push eax
push esi
call fcn.00407720
fld dword [edi + 0xc]
fsub dword [esi + 0xc]
fld dword [ebp - 4]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 5
jp 0x423c52
fadd dword [esi + 0xc]
push ecx
mov ecx, dword [ebx + 0xc]
fstp dword [ebp - 8]
fld dword [ebp - 8]
fld dword [ebp - 0xc]
fcom st(1)
fnstsw ax
test ah, 5
jp 0x423c45
fstp st(0)
fstp dword [esp]
push edi
call fcn.00407510
jmp 0x423c54
fstp st(1)
fstp dword [esp]
push edi
call fcn.00407510
jmp 0x423c54
fstp st(0)
mov byte [edi + 0x31], 1
fld1
fcomp dword [esi + 0x8c]
fnstsw ax
test ah, 0x41
jp 0x423ee5
cmp byte [esi + 0x78], 0
mov ecx, dword [ebp - 0x14]
mov eax, dword [ecx + 0x28]
mov edi, dword [ecx + 0x2c]
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], edi
je 0x423c9a
test eax, eax
jne 0x423cb3
call fcn.005cbe1d
xor eax, eax
cmp edi, dword [eax + 0x14]
jne 0x423c95
call fcn.005cbe1d
mov ecx, dword [edi]
mov dword [ebp - 0x14], ecx
push 0x6c
call fcn.005cb847
add esp, 4
test eax, eax
je 0x423cb7
mov ecx, eax
call fcn.004091f0
mov edi, eax
jmp 0x423cb9
mov eax, dword [eax]
jmp 0x423c8b
xor edi, edi
fld dword [esi + 0x10]
push 1
push ecx
mov ecx, edi
fstp dword [esp]
call fcn.00401510
mov edx, dword [esi + 8]
mov dword [edi + 8], edx
mov eax, dword [esi + 0x64]
push 0
push eax
call fcn.004014e0
fld dword [esi + 0xc]
push ecx
mov ecx, dword [ebx + 0xc]
fstp dword [esp]
push edi
call fcn.00407510
push 0
mov ecx, edi
call fcn.00401440
lea ecx, [ebp - 0x18]
push ecx
lea edx, [ebx + 0x3c]
push edx
mov ecx, edi
call fcn.004154d0
mov ecx, dword [ebx + 8]
push 1
push edi
call fcn.00418820
mov ecx, esi
call fcn.0040b8c0
mov edx, dword [esi]
mov dword [ebp - 4], eax
mov eax, dword [esi + 0xac]
mov dword [ebp - 0x14], eax
mov eax, dword [edx]
push 1
mov ecx, esi
call eax
mov esi, dword [ebp + 8]
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov eax, ecx
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0xc], edx
test eax, eax
jne 0x423d49
call fcn.005cbe1d
mov eax, dword [esi]
test eax, eax
je 0x423d4d
mov eax, dword [eax]
jmp 0x423d4f
xor eax, eax
mov ecx, dword [esi + 4]
cmp ecx, dword [eax + 0x14]
jne 0x423d5c
call fcn.005cbe1d
mov edx, dword [esi + 4]
mov eax, dword [edx]
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp - 0x10]
push ecx
mov dword [esi + 4], eax
push edx
lea eax, [ebp - 0x10]
push eax
lea ecx, [ebx + 0x20]
call fcn.00446d80
inc dword [ebx + 0x90]
push 0
mov ecx, edi
call fcn.00409270
push 0
mov ecx, edi
mov esi, eax
call fcn.004092e0
push 5
mov ecx, edi
mov dword [ebp + 8], eax
call fcn.00409380
mov byte [edi + 0x31], 1
test esi, esi
je 0x423db5
mov ecx, edi
call fcn.00409400
test al, al
je 0x423db5
mov byte [esi + 0x31], 1
mov eax, dword [ebp - 4]
test eax, eax
jle 0x423e39
sub eax, 0x40
jns 0x423dcb
mov dword [ebp - 4], 0
mov eax, dword [ebp - 4]
mov ecx, dword [ebx + 8]
movzx ecx, byte [ecx + 0x1a3]
neg ecx
sbb ecx, ecx
and ecx, 0xffffff06
add ecx, 0x1f4
mov edx, 0x12c
sub edx, eax
imul ecx, edx
mov eax, 0x1b4e81b5
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, 0x66666667
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*4]
add eax, eax
cmp eax, 0xa
jge 0x423e22
mov eax, 0xa
jmp 0x423e26
test eax, eax
jle 0x423e39
mov ecx, dword [ebp - 0x14]
cmp ecx, 1
jle 0x423e31
imul eax, ecx
mov word [edi + 0x5c], ax
mov word [edi + 0x5e], cx
mov eax, dword [ebx + 8]
inc dword [eax + 0x1a4]
push edi
mov ecx, ebx
call fcn.00423350
test al, al
jne 0x423f14
mov eax, dword [ebx + 8]
dec dword [eax + 0x1a4]
test esi, esi
je 0x423e8d
cmp byte [esi + 0x30], 0
jne 0x423e8d
mov eax, dword [esi + 8]
cmp eax, dword [edi + 8]
jne 0x423e8d
cmp dword [esi + 0x34], 0
jne 0x423e8d
cmp dword [esi + 0x38], 0
jne 0x423e8d
mov byte [edi + 0x32], 1
mov dword [edi + 0x3c], 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov eax, dword [ebp + 8]
test eax, eax
je 0x423ec8
cmp byte [edi + 0x30], 0
jne 0x423ec8
mov ecx, dword [eax + 8]
cmp ecx, dword [edi + 8]
jne 0x423ec8
cmp dword [eax + 0x34], 0
jne 0x423ec8
cmp dword [eax + 0x38], 0
jne 0x423ec8
mov byte [edi + 0x32], 1
cmp dword [eax + 0x3c], 0
jg 0x423f14
pop edi
pop esi
mov dword [eax + 0x3c], 1
pop ebx
mov esp, ebp
pop ebp
ret 4
mov ecx, dword [ebx + 8]
call fcn.00401b90
xor edx, edx
xor eax, eax
mov word [edi + 0x5c], dx
mov word [edi + 0x5e], ax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov esi, dword [ebp + 8]
mov eax, dword [esi]
test eax, eax
jne 0x423ef9
call fcn.005cbe1d
mov eax, dword [esi]
test eax, eax
je 0x423efd
mov eax, dword [eax]
jmp 0x423eff
xor eax, eax
mov ecx, dword [esi + 4]
cmp ecx, dword [eax + 0x14]
jne 0x423f0c
call fcn.005cbe1d
mov edx, dword [esi + 4]
mov eax, dword [edx]
mov dword [esi + 4], eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4