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

Disassembly:
sub esp, 0x18
push ebx
push ebp
mov ebp, dword [esp + 0x30]
push esi
push edi
xor edi, edi
cmp ebp, edi
je 0x41f3cb
cmp dword [0x51a26c], edi
je 0x41f3cb
mov eax, dword [0x51a284]
push 0x3f800000
push 0x3f800000
push edi
push edi
push eax
push edi
push edi
push edi
push 0x51a260
call fcn.004572b0
add esp, 0x24
mov eax, dword [0x51a2b8]
mov esi, dword [esp + 0x30]
mov ebx, dword [esp + 0x34]
cmp eax, edi
je 0x41f413
cmp ebp, edi
je 0x41f4b0
mov eax, dword [ebx + 0x20]
test al, 1
je 0x41f413
and al, 0xfe
push 0x3f800000
mov dword [ebx + 0x20], eax
mov ecx, dword [0x51a2d0]
push 0x3f800000
push edi
push edi
push ecx
push edi
push edi
push edi
push 0x51a2ac
call fcn.004572b0
add esp, 0x24
cmp ebp, edi
je 0x41f485
cmp dword [esi + 0x38], edi
je 0x41f445
mov eax, dword [esi + 0x74]
mov ecx, dword [0x51a25c]
push eax
push ecx
call fcn.00444ec0
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x10]
push edx
push eax
call fcn.00446670
mov ecx, dword [esi + 0x38]
push ecx
call fcn.00443ce0
add esp, 0x14
cmp dword [esi + 0x3c], edi
je 0x41f465
mov edx, dword [esi + 0x78]
mov eax, dword [0x51a25c]
push edx
push eax
call fcn.00444ec0
mov ecx, dword [esi + 0x3c]
push ecx
call fcn.00443ce0
add esp, 0xc
cmp dword [esi + 0x40], edi
je 0x41f485
mov edx, dword [esi + 0x7c]
mov eax, dword [0x51a25c]
push edx
push eax
call fcn.00444ec0
mov ecx, dword [esi + 0x40]
push ecx
call fcn.00443ce0
add esp, 0xc
mov eax, dword [0x51d0fc]
mov ecx, dword [esi]
mov ebp, dword [esi + 4]
mov edx, dword [0x51d0d0]
cmp eax, edi
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], ebp
je 0x41f4fe
mov eax, dword [edx]
mov dword [esp + 0x10], eax
mov eax, dword [edx + 4]
mov dword [esp + 0x14], eax
jmp 0x41f506
call fcn.0044c870
xor edx, edx
mov ecx, 0x57
div ecx
test edx, edx
jne 0x41f485
mov edx, dword [ebx + 0x20]
or edx, 1
mov dword [ebx + 0x20], edx
mov eax, dword [0x51a3f4]
cmp eax, edi
je 0x41f485
mov ecx, dword [0x5100c8]
mov edx, 1
shl edx, cl
mov dword [0x51d9f0], 0xffff8001
dec edx
push edx
push 0xbf
push edi
push eax
call fcn.00457fe0
add esp, 0x10
jmp 0x41f485
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], edi
test byte [esi + 0x68], 1
je 0x41f5a9
mov eax, dword [esp + 0x38]
mov edi, dword [esi + 0x64]
test eax, eax
jne 0x41f52e
mov eax, dword [ebx + 0x1c]
test eax, eax
jle 0x41f52e
sub eax, dword [ebx + 8]
mov dword [ebx + 0x1c], eax
mov edx, dword [0x51d0d0]
mov eax, dword [0x51d0fc]
test eax, eax
je 0x41f5c9
mov eax, dword [edx + 0xc]
test eax, eax
je 0x41f5c9
mov eax, dword [esp + 0x10]
cmp eax, ecx
jle 0x41f5c9
cmp eax, dword [esi + 8]
jge 0x41f5c9
mov eax, dword [esp + 0x14]
lea edx, [ebp + 0x5c]
cmp eax, edx
jle 0x41f5c9
add ebp, 0x82
cmp eax, ebp
jge 0x41f5c9
mov eax, dword [esp + 0x38]
test eax, eax
je 0x41f580
mov ecx, dword [esp + 0x2c]
lea eax, [ebx + 0x6c]
push edi
push eax
push esi
push ecx
jmp 0x41f600
mov eax, dword [esp + 0x10]
mov edi, dword [ebx + 0x6c]
sub eax, ecx
sub edi, ecx
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
shl eax, 2
cdq
idiv edi
mov edi, eax
mov dword [esi + 0x64], edi
mov ecx, dword [esi]
mov ebp, dword [esi + 4]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], ebp
mov dword [ebx + 0x18], 0xffffffff
mov eax, dword [esi + 0x44]
xor edi, edi
mov edx, dword [eax + 8]
test edx, edx
jle 0x41f76b
mov edx, dword [esp + 0x10]
jmp 0x41f683
mov eax, dword [0x51d110]
test eax, eax
je 0x41f608
mov eax, dword [0x51d100]
mov cl, byte [eax + 0xcb]
test cl, cl
je 0x41f636
mov eax, dword [ebx + 0x1c]
test eax, eax
jg 0x41f608
mov eax, dword [esp + 0x38]
mov dword [ebx + 0x1c], 0x96
test eax, eax
je 0x41f626
mov edx, dword [esp + 0x2c]
push edi
push 0
push esi
push edx
call fcn.0041fcc0
add esp, 0x10
mov eax, dword [esp + 0x38]
test eax, eax
je 0x41f599
mov ecx, dword [esp + 0x2c]
push edi
push 0
push esi
push ecx
call fcn.0041fcc0
add esp, 0x10
jmp 0x41f59c
sub edi, 5
jns 0x41f599
xor edi, edi
jmp 0x41f599
mov cl, byte [eax + 0xcd]
test cl, cl
je 0x41f608
mov eax, dword [ebx + 0x1c]
test eax, eax
jg 0x41f608
mov eax, dword [esp + 0x38]
mov dword [ebx + 0x1c], 0x96
test eax, eax
je 0x41f661
mov eax, dword [esp + 0x2c]
push edi
push 0
push esi
push eax
jmp 0x41f600
add edi, 5
cmp edi, 0x64
jle 0x41f599
mov edi, 0x64
jmp 0x41f599
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
mov ebp, dword [esp + 0x1c]
mov eax, dword [eax]
cmp edx, ecx
mov ebx, dword [eax + edi*4]
jle 0x41f70b
cmp edx, dword [esi + 8]
jge 0x41f70b
mov eax, dword [esi + 0x1c]
mov ecx, ebp
sub ecx, eax
mov eax, dword [esp + 0x14]
cmp eax, ecx
jle 0x41f70b
cmp eax, ebp
jge 0x41f70b
mov ecx, dword [esp + 0x34]
test ebx, ebx
mov dword [ecx + 0x18], edi
mov ebp, dword [esi + 0x80]
je 0x41f6f6
mov eax, dword [ecx + 4]
mov dword [ecx], edi
cmp edi, eax
je 0x41f6fc
mov eax, dword [0x51a3f0]
test eax, eax
je 0x41f6fc
mov ecx, dword [0x5100c8]
mov edx, 1
shl edx, cl
mov dword [0x51d9f0], 0
dec edx
push edx
push 0xbf
push 0
push eax
call fcn.00457fe0
mov ecx, dword [esp + 0x44]
add esp, 0x10
jmp 0x41f6fc
mov dword [ecx], 0xffffffff
mov eax, dword [esp + 0x38]
test eax, eax
jne 0x41f719
mov eax, dword [ecx]
mov dword [ecx + 4], eax
jmp 0x41f742
mov eax, dword [esp + 0x38]
mov ebp, dword [esi + 0x84]
test eax, eax
je 0x41f742
test ebx, ebx
je 0x41f742
mov ecx, dword [0x51a25c]
push ebp
push ecx
call fcn.00444ec0
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
push edx
push eax
call fcn.00446670
push ebx
call fcn.00443ce0
add esp, 0x14
mov ecx, dword [esi + 0x18]
mov ebp, dword [esp + 0x18]
mov edx, dword [esi + 0x1c]
mov ebx, dword [esp + 0x1c]
mov eax, dword [esi + 0x44]
add ebp, ecx
add ebx, edx
inc edi
mov ecx, dword [eax + 8]
mov dword [esp + 0x18], ebp
cmp edi, ecx
mov dword [esp + 0x1c], ebx
jl 0x41f677
mov ebp, dword [esp + 0x38]
mov ebx, dword [esp + 0x34]
test ebp, ebp
je 0x41f7f5
mov eax, dword [ebx]
test eax, eax
jl 0x41f7f5
mov ecx, dword [esi + 0x48]
cmp eax, dword [ecx + 8]
jge 0x41f7f5
mov ecx, dword [ecx]
cmp dword [ecx + eax*4], 0
je 0x41f7f5
lea edx, [esp + 0x18]
push edx
call fcn.004455f0
lea eax, [esi + 0x28]
push eax
call fcn.00445360
push 1
call fcn.00445bf0
mov edx, dword [esi + 0x48]
mov ecx, dword [ebx]
push 4
mov eax, dword [edx]
mov edi, dword [eax + ecx*4]
mov ecx, dword [0x51a25c]
push ecx
call fcn.00444ec0
mov edx, dword [0x51a25c]
mov eax, dword [edx + 0x24]
mov eax, dword [eax + 0x10]
mov ecx, dword [eax + 0x30]
mov edx, dword [eax + 0x1c]
sub ecx, edx
push ecx
push 0
call fcn.00446670
push edi
call fcn.00443ce0
push 0
call fcn.00445bf0
lea edx, [esp + 0x3c]
push edx
call fcn.00445360
add esp, 0x28
call fcn.0041ff20
mov eax, dword [esi + 0x6c]
xor edi, edi
cmp eax, edi
je 0x41f80d
mov ecx, dword [ebx + 0x18]
push ecx
push esi
call eax
add esp, 8
cmp dword [ebx + 0x30], edi
je 0x41f87f
cmp ebp, edi
je 0x41f865
mov edx, dword [ebx + 0x34]
cmp edx, edi
je 0x41f87f
mov eax, dword [0x50deb8]
lea ecx, [ebx + 0x24]
mov dword [esp + 0x1c], edi
push 0x3f800000
mov ebx, dword [eax + 0x60]
push ecx
sub ebx, dword [eax + 0x58]
mov eax, dword [0x51a3ec]
inc ebx
mov dword [esp + 0x20], ebx
fild qword [esp + 0x20]
fild dword [edx + 0x18]
mov edx, dword [ecx + 0x24]
fdivp st(1)
fstp dword [esp]
push edi
push edi
push edx
mov edx, dword [0x51a3e8]
push edi
push eax
push edx
push ecx
call fcn.004572b0
add esp, 0x24
jmp 0x41f87f
cmp dword [0x51a3ec], 0x1e0
jl 0x41f879
mov dword [0x51a3ec], edi
jmp 0x41f87f
inc dword [0x51a3ec]
mov eax, dword [0x51a420]
mov ebx, dword [esp + 0x3c]
test eax, eax
je 0x41f954
test ebx, ebx
jne 0x41f954
mov eax, dword [0x51a39c]
test eax, eax
je 0x41f913
test ebp, ebp
je 0x41f8e0
mov ecx, dword [esp + 0x2c]
mov eax, dword [0x51a3b4]
mov edi, dword [esp + 0x14]
push 0x3f800000
mov edx, dword [ecx + 0x1010]
push 0x3f800000
neg edx
push ebx
push ebx
shl edx, 2
push eax
mov eax, dword [esp + 0x24]
push edx
push edi
push eax
push 0x51a390
call fcn.004572b0
add esp, 0x24
jmp 0x41f917
mov ecx, dword [esp + 0x34]
mov edx, dword [ecx + 8]
push edx
push 0x51a390
call fcn.00456fe0
mov edi, dword [esp + 0x1c]
add esp, 8
mov ecx, dword [esp + 0x34]
mov edx, dword [ecx + 8]
push edx
push 0x51a348
call fcn.00456fe0
add esp, 8
jmp 0x41f9bc
mov edi, dword [esp + 0x14]
test ebp, ebp
je 0x41f8f9
mov ecx, dword [esp + 0x2c]
mov eax, dword [0x51a36c]
push 0x3f800000
push 0x3f800000
mov edx, dword [ecx + 0x1010]
push 0
neg edx
push 0
push eax
mov eax, dword [esp + 0x24]
shl edx, 2
push edx
push edi
push eax
push 0x51a348
call fcn.004572b0
add esp, 0x24
jmp 0x41f958
mov edi, dword [esp + 0x14]
test ebp, ebp
je 0x41f9b8
mov eax, dword [esi + 0x54]
test eax, eax
je 0x41f9b8
test ebx, ebx
jne 0x41fa2b
mov eax, dword [esp + 0x34]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 0xc]
sub edx, ecx
mov ecx, edx
mov dword [eax + 0xc], edx
test ecx, ecx
jg 0x41f991
mov edx, dword [esi + 0x58]
mov dword [eax + 0x10], 1
mov dword [eax], edx
jmp 0x41fa2b
mov eax, dword [0x51d118]
test eax, eax
jne 0x41f9ac
mov eax, dword [0x51d0f0]
test eax, eax
jne 0x41f9ac
call fcn.0044a930
test al, al
je 0x41f9bc
mov ecx, dword [esp + 0x34]
mov eax, dword [esi + 0x54]
mov dword [ecx + 0xc], eax
jmp 0x41f9bc
test ebx, ebx
jne 0x41fa2b
cmp dword [0x51d0f0], 0x103
jne 0x41f9d8
mov eax, dword [esp + 0x34]
cmp dword [eax], 0xffffffff
je 0x41f9d8
mov dword [eax + 0x10], 1
test ebx, ebx
jne 0x41fa2b
mov edx, dword [0x51d118]
lea eax, [edx - 1]
cmp eax, 0xcf
ja case.0x41f9f4.5
xor ecx, ecx
mov cl, byte [eax + 0x41fbec]
jmp dword [ecx*4 + 0x41fbd8]
mov eax, dword [esp + 0x34]
mov esi, dword [esi + 0x5c]
test esi, esi
mov dword [eax], esi
jl case.0x41f9f4.5
mov dword [eax + 0x10], 1
mov eax, dword [0x51a420]
test eax, eax
jne 0x41fa2b
call fcn.0044a930
test al, al
je 0x41fa2b
mov dword [0x51a420], 1
mov edx, dword [esp + 0x34]
xor eax, eax
pop edi
pop esi
mov ecx, dword [edx + 0x10]
pop ebp
test ecx, ecx
sete al
pop ebx
add esp, 0x18
ret
mov eax, dword [esp + 0x34]
cmp dword [eax], 0
jmp 0x41fa06
cmp edi, dword [esi + 0xc]
jle 0x41fa57
mov edx, dword [esi + 0x44]
mov eax, dword [edx + 8]
jmp 0x41fa85
mov edx, dword [esi + 4]
mov ecx, dword [esi + 0x1c]
mov eax, edx
sub eax, ecx
cmp edi, eax
jge 0x41fa69
xor eax, eax
jmp 0x41fa86
mov eax, ecx
sub eax, edx
add eax, edi
cdq
idiv ecx
mov ecx, dword [esi + 0x44]
mov ecx, dword [ecx + 8]
cmp eax, ecx
jl 0x41fa81
lea eax, [ecx - 1]
jmp 0x41fa86
test eax, eax
jle 0x41fa86
dec eax
mov ebp, dword [esp + 0x34]
mov ecx, dword [ebp + 0x14]
cmp ecx, eax
jne 0x41fa96
cmp ecx, 0xffffffff
jne 0x41faa5
mov edx, dword [esi + 0x44]
mov ecx, dword [edx]
cmp dword [ecx + eax*4], 0
jne 0x41fb94
lea ecx, [eax - 1]
test ecx, ecx
jl 0x41facb
mov edx, dword [esi + 0x44]
mov edx, dword [edx]
lea edx, [edx + ecx*4]
cmp dword [edx], 0
jne 0x41fac3
dec ecx
sub edx, 4
test ecx, ecx
jge 0x41fab4
jmp 0x41facb
test ecx, ecx
jge 0x41fb92
mov edx, dword [esi + 0x44]
mov ecx, dword [edx + 8]
dec ecx
js 0x41fb94
mov edx, dword [edx]
lea edx, [edx + ecx*4]
cmp dword [edx], 0
jne 0x41faef
dec ecx
sub edx, 4
test ecx, ecx
jge 0x41fadd
jmp 0x41fb94
test ecx, ecx
jl 0x41fb94
jmp 0x41fb92
cmp edi, dword [esi + 0xc]
jle 0x41fb0a
mov eax, dword [esi + 0x44]
mov eax, dword [eax + 8]
dec eax
jmp 0x41fb3b
mov edx, dword [esi + 4]
mov ecx, dword [esi + 0x1c]
mov eax, edx
sub eax, ecx
cmp edi, eax
jge 0x41fb1c
xor eax, eax
jmp 0x41fb3b
mov eax, ecx
sub eax, edx
add eax, edi
cdq
idiv ecx
mov ecx, dword [esi + 0x44]
mov ecx, dword [ecx + 8]
lea edx, [ecx - 1]
cmp eax, edx
jge 0x41fb35
inc eax
jmp 0x41fb3b
cmp eax, ecx
jl 0x41fb3b
mov eax, edx
mov ebp, dword [esp + 0x34]
mov ecx, dword [ebp + 0x14]
cmp ecx, eax
jne 0x41fb4b
cmp ecx, 0xffffffff
jne 0x41fb56
mov edx, dword [esi + 0x44]
mov ecx, dword [edx]
cmp dword [ecx + eax*4], 0
jne 0x41fb94
mov ebx, dword [esi + 0x44]
lea ecx, [eax + 1]
mov edx, dword [ebx + 8]
cmp ecx, edx
jge 0x41fb79
mov edi, dword [ebx]
lea edi, [edi + ecx*4]
cmp dword [edi], 0
jne 0x41fb75
inc ecx
add edi, 4
cmp ecx, edx
jl 0x41fb68
cmp ecx, edx
jl 0x41fb92
xor ecx, ecx
test edx, edx
jle 0x41fb8e
mov edi, dword [ebx]
cmp dword [edi], 0
jne 0x41fb8e
inc ecx
add edi, 4
cmp ecx, edx
jl 0x41fb81
cmp ecx, edx
jge 0x41fb94
mov eax, ecx
test eax, eax
jl case.0x41f9f4.5
mov dword [ebp + 0x14], eax
mov edi, dword [esi]
mov ecx, dword [esi + 8]
mov edx, dword [esi + 0x1c]
sub ecx, edi
mov ebx, dword [esi + 4]
add ecx, edx
push 0
sar ecx, 2
add ecx, edi
dec eax
imul eax, edx
sar edx, 1
add eax, edx
add eax, ebx
push eax
push ecx
call fcn.0044a450
add esp, 0xc
mov dword [0x51a420], 0
jmp 0x41fa2b