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

Disassembly:
push ebp
xor eax, eax
push edi
mov edi, edx
xor edx, edx
push esi
push ebx
mov ebx, ecx
sub esp, 0x10c
mov dword [esp + eax + 0x40], edx
add eax, 4
cmp eax, 0x20
jb 0x415562
xor edx, edx
xor eax, eax
mov dword [esp + eax + 0x60], edx
add eax, 4
cmp eax, 0x20
jb 0x415572
mov eax, dword [ebx + 0x18]
fild dword [ebx + 0x18]
fmul dword [0x44a200]
shl eax, 3
mov dword [esp + 0x24], eax
fild dword [esp + 0x24]
fxch st(1)
fucomi st(1)
jp 0x4155a1
je 0x415657
fld st(0)
fabs
fxch st(2)
fsubrp st(1)
fabs
fmul dword [0x44a204]
fxch st(1)
fcompi st(1)
fstp st(0)
jae 0x41565b
call fcn.004083d0
mov eax, dword [esp + 0x60]
mov edx, dword [esp + 0x64]
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.0040d7f0
sub esp, 8
mov eax, dword [esp + 0x68]
mov edx, dword [esp + 0x6c]
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.0040d7f0
sub esp, 8
mov eax, dword [esp + 0x70]
mov edx, dword [esp + 0x74]
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.0040d7f0
sub esp, 8
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.0040d7f0
sub esp, 8
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x4c]
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.0040d7f0
sub esp, 8
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x54]
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.0040d7f0
sub esp, 8
add esp, 0x10c
pop ebx
pop esi
pop edi
pop ebp
ret
fstp st(0)
fstp st(0)
mov dword [esp], 0x4481cc
call fcn.00438340
mov ebp, eax
cmp edi, 1
je 0x4158b8
lea esi, [ebx + 0x14]
cmp edi, 2
je 0x415960
lea eax, [ebx + 0x24]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x24]
lea edx, [esp + 0x40]
mov ecx, esi
mov dword [esp], eax
call fcn.00414690
sub esp, 4
cmp byte [ebp], 0
mov edi, eax
jne 0x4155c2
cmp eax, 0xff
jg 0x4156f0
ja 0x415984
mov ecx, dword [esp + 0x28]
mov edx, 1
call fcn.00409e00
mov edx, dword [ebx + 0x28]
mov eax, dword [ebx + 0x24]
mov ecx, edi
mov byte [edx + eax + 4], cl
mov eax, dword [ebx + 0x24]
lea edx, [eax + 1]
xor eax, edx
test edx, eax
jns 0x4156e0
call fcn.004083d0
jmp 0x415685
mov eax, dword [ebx + 0x28]
mov dword [ebx + 0x24], edx
mov byte [eax + edx + 4], 0
jmp 0x415685
cmp eax, 0x100
je 0x4155c2
cmp eax, 0x11d
jg 0x4159b8
lea eax, [eax - 0x101]
mov ecx, esi
mov edx, dword [eax*4 + 0x449c40]
mov edi, dword [eax*4 + 0x449cc0]
call fcn.004147c0
cmp byte [ebp], 0
jne 0x4155c2
lea ecx, [edi + eax]
xor edi, ecx
xor eax, ecx
mov dword [esp + 0x2c], ecx
test edi, eax
js 0x4155bd
mov eax, dword [esp + 0x24]
lea edx, [esp + 0x60]
mov ecx, esi
mov dword [esp], eax
call fcn.00414690
sub esp, 4
cmp byte [ebp], 0
jne 0x4155c2
cmp eax, 0x1d
jg 0x415a65
ja 0x415a50
mov edx, dword [eax*4 + 0x449b40]
mov ecx, esi
mov edi, dword [eax*4 + 0x449bc0]
call fcn.004147c0
cmp byte [ebp], 0
jne 0x4155c2
lea edx, [edi + eax]
xor edi, edx
xor eax, edx
test edi, eax
js 0x4155bd
mov edi, dword [ebx + 0x24]
cmp edi, edx
jl 0x415aa5
mov ecx, edi
sub ecx, edx
mov eax, ecx
xor edx, ecx
mov dword [esp + 0x30], ecx
xor eax, edi
not eax
or edx, eax
jns 0x4155bd
mov eax, dword [esp + 0x2c]
mov ecx, edi
lea edx, [eax + edi]
xor ecx, edx
xor eax, edx
test ecx, eax
js 0x4155bd
test edx, edx
js 0x415af9
mov ecx, dword [esp + 0x28]
call fcn.0040a180
mov eax, dword [esp + 0x2c]
lea ecx, [eax - 1]
xor eax, ecx
mov dword [esp + 0x2c], ecx
not eax
or eax, ecx
jns 0x4155bd
mov eax, dword [esp + 0x30]
xor ecx, ecx
mov dword [esp + 0x34], esi
mov esi, ebx
mov dword [esp + 0x38], ebp
mov ebx, eax
mov eax, ecx
cmp eax, dword [esp + 0x2c]
jg 0x4158a2
lea ebp, [eax + edi]
mov ecx, eax
mov edx, edi
xor ecx, ebp
xor edx, ebp
test ecx, edx
js 0x4155bd
mov ecx, dword [esi + 0x24]
test ebp, ebp
js 0x415b2d
cmp ebp, ecx
jge 0x415b2d
mov edx, dword [esi + 0x28]
test edx, edx
je 0x415863
mov edx, dword [edx]
and edx, 0x40000000
je 0x415863
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x3c], eax
call fcn.0040c650
mov ecx, dword [esi + 0x24]
mov eax, dword [esp + 0x3c]
test ebx, ebx
js 0x415ae5
cmp ebx, ecx
jge 0x415ae5
mov edx, dword [esi + 0x28]
movzx ecx, byte [edx + ebx + 4]
add ebx, 1
cmp edi, ebx
cmovle ebx, dword [esp + 0x30]
mov byte [edx + ebp + 4], cl
lea edx, [eax + 1]
xor eax, edx
test edx, eax
js 0x4155bd
mov eax, edx
cmp eax, dword [esp + 0x2c]
jle 0x415818
mov ebx, esi
mov ebp, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
jmp 0x415685
lea ecx, [esp + 0x40]
call fcn.00414320
cmp byte [ebp], 0
jne 0x4155c2
lea esi, [esp + 0x80]
xor eax, eax
mov ecx, 0x20
mov edi, esi
lea edx, [esp + 0x100]
rep stosd dword es:[edi], eax
mov eax, esi
lea esi, [esi]
lea esi, [esi]
mov dword [eax], 5
add eax, 4
cmp eax, edx
jne 0x4158f0
mov ecx, esi
mov edx, 0x20
call fcn.0040dbf0
lea ecx, [esp + 0x70]
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.0040da70
sub esp, 8
lea ecx, [esp + 0x60]
mov dword [esp + 0x7c], 0x20
mov dword [esp + 0x78], 0xf
call fcn.00413bc0
cmp byte [ebp], 0
jne 0x4155c2
lea ecx, [esp + 0x60]
call fcn.00413ea0
cmp byte [ebp], 0
jne 0x4155c2
lea esi, [ebx + 0x14]
jmp 0x41567e
lea eax, [esp + 0x60]
lea edx, [esp + 0x40]
mov ecx, esi
mov dword [esp], eax
call fcn.004149c0
sub esp, 4
cmp byte [ebp], 0
je 0x41567e
jmp 0x4155c2
sar edi, 0x1f
mov dword [esp + 0x10], 0xff
mov dword [esp + 0x14], 0
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
mov dword [esp], eax
mov dword [esp + 4], edi
call fcn.00408b10
jmp 0x4155c2
mov eax, dword [esp + 0x24]
mov edx, 4
mov ecx, 0x20
cmp dword [ebx + 0x14], eax
jg 0x415a1d
call fcn.0040a600
mov dword [eax], 0x448238
mov ecx, eax
mov dword [eax + 8], str.NZError
mov dword [eax + 0xc], 0x1a
mov dword [eax + 0x10], 0x449ec0
mov dword [eax + 4], 0
mov dword [esp + 8], 0x288
mov dword [esp + 4], str.nimz.nim
mov edx, str.NZError
mov dword [esp], str.inflateHuffmanBlock
call fcn.0040ada0
sub esp, 0xc
jmp 0x4155c2
call fcn.0040a600
mov dword [eax], 0x448238
mov ecx, eax
mov dword [eax + 8], str.NZError
mov dword [eax + 0xc], 0xa
mov dword [eax + 0x10], 0x449ee0
mov dword [eax + 4], 0
mov dword [esp + 8], 0x287
jmp 0x4159fc
mov dword [esp + 4], 0x1d
mov dword [esp], eax
call fcn.0040b140
jmp 0x4155c2
mov ecx, 0x20
mov edx, 4
call fcn.0040a600
mov dword [eax], 0x448238
mov ecx, eax
mov dword [eax + 8], str.NZError
mov dword [eax + 0xc], 0x2c
mov dword [eax + 0x10], 0x449e00
mov dword [eax + 4], 0
mov dword [esp + 8], 0x26f
jmp 0x4159fc
mov ecx, 0x20
mov edx, 4
call fcn.0040a600
mov dword [eax], 0x448238
mov ecx, eax
mov dword [eax + 8], str.NZError
mov dword [eax + 0xc], 0x1a
mov dword [eax + 0x10], 0x449de0
mov dword [eax + 4], 0
mov dword [esp + 8], 0x27a
jmp 0x4159fc
sub ecx, 1
mov dword [esp], ebx
mov dword [esp + 4], ecx
call fcn.0040b140
jmp 0x4155c2
mov dword [esp], edx
sar edx, 0x1f
mov dword [esp + 0x10], 0x7fffffff
mov dword [esp + 0x14], 0
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
mov dword [esp + 4], edx
call fcn.00408b10
jmp 0x4155c2
lea eax, [ecx - 1]
mov dword [esp], ebp
mov dword [esp + 4], eax
call fcn.0040b140
jmp 0x4155c2