Function at 0x1004c5d0
Capabilities:
Enumerate pe sections
Resolve function by parsing pe exports

Disassembly:
push ebp
lea ebp, [esp - 0x54]
sub esp, 0x54
push 0xffffffffffffffff
push 0x1019149d
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x164
fldz
push ebx
push esi
mov esi, dword [ebp + 0x5c]
fst dword [ebp + 0x10]
push edi
cmp dword [esi + 0x58], 0
jge 0x1004c64c
test byte [esi + 4], 2
lea eax, [ebp - 0x28]
fst dword [ebp - 0x1c]
fst dword [ebp - 0x18]
fstp dword [ebp - 0x14]
mov dword [ebp - 0x24], 0xffffffff
lea ecx, [esi + 0x40]
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x10], 0
push eax
mov dword [ebp - 0x28], 0x1b00d9
je 0x1004c63d
mov dword [ebp - 0x28], 0x20002
call fcn.10050380
mov eax, dword [esi + 0x40]
fld dword [ebp + 0x10]
dec eax
mov dword [esi + 0x58], eax
mov eax, dword [esi + 0x14]
mov dword [esi + 8], 0
mov dword [esi + 0x20], 0
mov dword [esi + 0x1c], 0
fst dword [esi + 0x24]
fst dword [esi + 0x28]
fst dword [esi + 0x2c]
fstp dword [esi + 0x30]
test eax, eax
je 0x1004c67d
push eax
call fcn.1003f1d0
add esp, 4
mov eax, dword [esi + 0x18]
test eax, eax
je 0x1004c68d
push eax
call fcn.1003f1d0
add esp, 4
xor ecx, ecx
mov dword [esi + 0x14], 0
mov dword [esi + 0x18], 0
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x64], 0
mov dword [ebp + 0x24], ecx
mov dword [ebp - 0x5c], ecx
xor edi, edi
mov dword [ebp - 4], ecx
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x44], ecx
mov dword [ebp + 0x28], edi
mov dword [ebp - 0x3c], edi
mov eax, dword [esi + 0x4c]
mov byte [ebp - 4], 1
mov dword [ebp + 0x2c], eax
test eax, eax
jle 0x1004c6f5
lea ebx, [ecx + 8]
cmp eax, 8
jl 0x1004c6da
mov ebx, eax
imul eax, ebx, 0xc4
push eax
call fcn.1003f1a0
mov dword [ebp + 0x24], eax
add esp, 4
mov dword [ebp - 0x5c], eax
mov eax, dword [ebp + 0x2c]
mov dword [ebp - 0x60], ebx
mov ebx, dword [esi + 0x34]
mov dword [ebp - 0x64], eax
mov dword [ebp + 0x48], ebx
test ebx, ebx
jle 0x1004c72c
cmp ebx, 8
jge 0x1004c70c
mov ebx, 8
lea eax, [ebx + ebx*2]
shl eax, 3
push eax
call fcn.1003f1a0
mov edi, eax
mov dword [ebp - 0x40], ebx
mov ebx, dword [ebp + 0x48]
add esp, 4
mov eax, dword [ebp + 0x2c]
mov dword [ebp + 0x28], edi
mov dword [ebp - 0x3c], edi
imul ecx, eax, 0xc4
mov dword [ebp - 0x44], ebx
push ecx
push 0
push dword [ebp + 0x24]
call fcn.10164250
lea eax, [ebx + ebx*2]
shl eax, 3
push eax
push 0
push edi
call fcn.10164250
add esp, 0x18
mov dword [ebp + 0x50], 0
cmp dword [esi + 0x4c], 0
jle 0x1004c867
mov ebx, dword [ebp + 0x24]
xor eax, eax
mov dword [ebp + 0x30], eax
add ebx, 0xa4
mov ecx, dword [esi + 0x54]
xor edx, edx
add ecx, eax
mov dword [ebx - 4], 0xffffffff
mov dword [ebp + 0x44], ecx
cmp dword [esi + 0x34], edx
jle 0x1004ca58
or esi, 0xffffffff
mov edi, ecx
mov eax, esi
cmp esi, 0xffffffff
jne 0x1004c7b7
mov eax, dword [ebp + 0x5c]
or esi, esi
mov ecx, dword [eax + 0x3c]
mov eax, dword [edi + 0x74]
cmp eax, dword [ecx + edx*4]
jne 0x1004c7ac
mov dword [ebx - 4], edx
mov esi, edx
mov ecx, dword [ebp + 0x5c]
inc edx
mov eax, esi
cmp edx, dword [ecx + 0x34]
jl 0x1004c790
mov edi, dword [ebp + 0x28]
cmp eax, 0xffffffff
je 0x1004ca58
mov eax, dword [ebp + 0x44]
push dword [eax + 0xc]
mov esi, dword [eax]
push esi
call fcn.10055890
push eax
lea ecx, [ebx - 0xa4]
push esi
push ecx
call fcn.100510d0
add esp, 0x14
test eax, eax
je 0x1004ca58
mov eax, dword [ebx - 4]
lea esi, [eax + eax*2]
mov eax, dword [ebp + 0x44]
mov eax, dword [eax + 0x30]
test eax, eax
jne 0x1004c7ff
mov eax, 0x101af6a4
mov dword [ebx - 8], eax
cmp word [eax], 0
je 0x1004c82e
jmp 0x1004c810
movzx ecx, word [eax + 2]
test cx, cx
je 0x1004c82e
mov edx, ecx
mov ecx, dword [ebx]
cmp ecx, edx
jge 0x1004c823
mov ecx, edx
add eax, 4
mov dword [ebx], ecx
cmp word [eax], 0
jne 0x1004c810
inc dword [edi + esi*8]
lea ecx, [edi + esi*8]
mov eax, dword [ebx]
cmp dword [ecx + 4], eax
lea eax, [ecx + 4]
jge 0x1004c840
mov eax, ebx
mov eax, dword [eax]
add ebx, 0xc4
mov esi, dword [ebp + 0x5c]
mov dword [ecx + 4], eax
mov ecx, dword [ebp + 0x50]
mov eax, dword [ebp + 0x30]
inc ecx
add eax, 0x78
mov dword [ebp + 0x50], ecx
mov dword [ebp + 0x30], eax
cmp ecx, dword [esi + 0x4c]
jl 0x1004c771
mov eax, dword [ebp + 0x2c]
xor esi, esi
mov dword [ebp + 0x30], esi
test eax, eax
jle 0x1004cb23
mov edx, dword [ebp + 0x24]
add edx, 0xa8
mov dword [ebp + 0x14], eax
mov dword [ebp + 0x4c], edx
mov eax, dword [edx - 8]
lea esi, [edx + 4]
mov ecx, esi
lea ebx, [eax + eax*2]
mov eax, dword [edx - 4]
add eax, 0x20
mov dword [ebp + 0x50], ebx
sar eax, 5
push eax
call fcn.100505e0
mov eax, dword [esi]
shl eax, 2
push eax
mov eax, dword [ebp + 0x4c]
push 0
push dword [eax + 0xc]
call fcn.10164250
lea esi, [edi + ebx*8]
add esp, 0xc
cmp dword [esi + 0xc], 0
jne 0x1004c8e9
mov eax, dword [edi + ebx*8 + 4]
lea ecx, [esi + 0xc]
add eax, 0x20
sar eax, 5
push eax
call fcn.100505e0
mov eax, dword [esi + 0xc]
shl eax, 2
push eax
push 0
push dword [esi + 0x14]
call fcn.10164250
add esp, 0xc
mov edx, dword [ebp + 0x4c]
mov eax, dword [edx - 0xc]
mov dword [ebp + 0x44], eax
cmp word [eax], 0
je 0x1004c988
lea esp, [esp]
movzx ecx, word [eax + 2]
test cx, cx
je 0x1004c985
movzx edi, word [eax]
cmp edi, ecx
ja 0x1004c972
mov eax, dword [ebp + 0x50]
mov ecx, edi
and ecx, 0x1f
mov ebx, 1
shl ebx, cl
mov esi, edi
mov ecx, dword [ebp + 0x28]
sar esi, 5
mov eax, dword [ecx + eax*8 + 0x14]
test dword [eax + esi*4], ebx
jne 0x1004c966
lea eax, [edx - 0xa8]
push edi
push eax
call fcn.10055570
mov edx, dword [ebp + 0x4c]
add esp, 8
test eax, eax
je 0x1004c966
inc dword [edx]
mov ecx, dword [ebp + 0x50]
mov eax, dword [ebp + 0x28]
inc dword [eax + ecx*8 + 8]
mov eax, dword [edx + 0xc]
or dword [eax + esi*4], ebx
mov eax, dword [ebp + 0x28]
mov eax, dword [eax + ecx*8 + 0x14]
or dword [eax + esi*4], ebx
inc dword [ebp + 0x30]
mov eax, dword [ebp + 0x44]
inc edi
movzx eax, word [eax + 2]
cmp edi, eax
jbe 0x1004c910
mov eax, dword [ebp + 0x44]
add eax, 4
mov dword [ebp + 0x44], eax
cmp word [eax], 0
jne 0x1004c900
mov edi, dword [ebp + 0x28]
add edx, 0xc4
sub dword [ebp + 0x14], 1
mov dword [ebp + 0x4c], edx
jne 0x1004c886
mov esi, dword [ebp + 0x24]
mov ecx, dword [ebp + 0x2c]
add esi, 0xb8
mov dword [ebp + 0x4c], ecx
lea ebx, [ebx]
mov edi, dword [esi - 0x10]
cmp edi, dword [esi + 4]
jle 0x1004c9ef
lea eax, [edi*4]
push eax
call fcn.1003f1a0
mov ebx, eax
add esp, 4
mov eax, dword [esi + 8]
test eax, eax
je 0x1004c9e9
mov ecx, dword [esi]
shl ecx, 2
push ecx
push eax
push ebx
call fcn.10163cd0
push dword [esi + 8]
call fcn.1003f1d0
add esp, 0x10
mov dword [esi + 8], ebx
mov dword [esi + 4], edi
mov edx, dword [esi - 4]
mov eax, dword [esi - 0xc]
mov dword [ebp + 0x14], edx
lea eax, [edx + eax*4]
mov dword [ebp + 0xc], eax
cmp edx, eax
jae 0x1004cae6
xor ecx, ecx
mov dword [ebp + 0x50], ecx
jmp 0x1004ca10
mov eax, dword [edx]
mov dword [ebp + 0x20], eax
test eax, eax
je 0x1004cad1
xor edi, edi
mov ebx, 1
mov dword [ebp + 0x44], edi
test eax, ebx
je 0x1004cabf
mov eax, dword [esi]
and ecx, 0xffffffe0
add ecx, edi
mov dword [ebp + 0x18], ecx
mov ecx, dword [esi + 4]
cmp eax, ecx
jne 0x1004caac
inc eax
mov dword [ebp + 0x40], eax
test ecx, ecx
je 0x1004ca5f
mov eax, ecx
cdq
sub eax, edx
mov edi, eax
mov eax, dword [ebp + 0x40]
sar edi, 1
add edi, ecx
jmp 0x1004ca64
xor bl, bl
jmp 0x1004d69f
mov edi, 8
cmp edi, eax
jg 0x1004ca6a
mov edi, eax
cmp edi, ecx
jle 0x1004caa9
lea eax, [edi*4]
push eax
call fcn.1003f1a0
mov edx, dword [esi + 8]
add esp, 4
mov dword [ebp + 0x40], eax
test edx, edx
je 0x1004caa3
mov ecx, dword [esi]
shl ecx, 2
push ecx
push edx
push eax
call fcn.10163cd0
push dword [esi + 8]
call fcn.1003f1d0
mov eax, dword [ebp + 0x40]
add esp, 0x10
mov dword [esi + 8], eax
mov dword [esi + 4], edi
mov edi, dword [ebp + 0x44]
mov ecx, dword [esi]
mov eax, dword [esi + 8]
mov edx, dword [ebp + 0x18]
mov dword [eax + ecx*4], edx
inc dword [esi]
mov eax, dword [ebp + 0x20]
mov ecx, dword [ebp + 0x50]
inc edi
rol ebx, 1
mov dword [ebp + 0x44], edi
cmp edi, 0x20
jb 0x1004ca27
mov edx, dword [ebp + 0x14]
add edx, 4
add ecx, 0x20
mov dword [ebp + 0x14], edx
mov dword [ebp + 0x50], ecx
cmp edx, dword [ebp + 0xc]
jb 0x1004ca10
mov eax, dword [esi - 4]
test eax, eax
je 0x1004cb0b
push eax
mov dword [esi - 8], 0
mov dword [esi - 0xc], 0
call fcn.1003f1d0
add esp, 4
mov dword [esi - 4], 0
add esi, 0xc4
sub dword [ebp + 0x4c], 1
jne 0x1004c9b0
mov edi, dword [ebp + 0x28]
mov esi, dword [ebp + 0x30]
jmp 0x1004cb25
xor esi, esi
cmp dword [ebp + 0x48], 0
jle 0x1004cb5f
lea ebx, [edi + 0x14]
mov edi, dword [ebp + 0x48]
mov eax, dword [ebx]
test eax, eax
je 0x1004cb54
push eax
mov dword [ebx - 4], 0
mov dword [ebx - 8], 0
call fcn.1003f1d0
add esp, 4
mov dword [ebx], 0
add ebx, 0x18
sub edi, 1
jne 0x1004cb31
mov edi, dword [ebp + 0x28]
test edi, edi
je 0x1004cb82
push edi
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x44], 0
call fcn.1003f1d0
add esp, 4
xor eax, eax
mov dword [ebp + 0x28], eax
mov dword [ebp - 0x3c], eax
xor ebx, ebx
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x50], 0
mov dword [ebp + 0x30], ebx
mov dword [ebp - 0x48], ebx
xor eax, eax
mov dword [ebp - 0x6c], ebx
mov dword [ebp - 0x70], ebx
mov dword [ebp + 0x44], eax
mov dword [ebp - 0x68], eax
mov byte [ebp - 4], 7
test esi, esi
jle 0x1004cbd1
lea edi, [ebx + 8]
cmp esi, 8
jl 0x1004cbb8
mov edi, esi
mov eax, edi
shl eax, 4
push eax
call fcn.1003f1a0
mov ebx, eax
mov dword [ebp - 0x4c], edi
add esp, 4
mov dword [ebp + 0x30], ebx
mov dword [ebp - 0x48], ebx
mov dword [ebp - 0x50], esi
test esi, esi
jle 0x1004cc02
mov edi, 8
cmp esi, 8
jl 0x1004cbe4
mov edi, esi
lea eax, [edi*8]
sub eax, edi
shl eax, 2
push eax
call fcn.1003f1a0
add esp, 4
mov dword [ebp + 0x44], eax
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x6c], edi
mov ecx, esi
mov dword [ebp - 0x70], esi
shl ecx, 4
push ecx
push 0
push ebx
call fcn.10164250
lea eax, [esi*8]
sub eax, esi
shl eax, 2
push eax
push 0
push dword [ebp + 0x44]
call fcn.10164250
mov ecx, dword [ebp + 0x2c]
xor eax, eax
xor edi, edi
mov dword [ebp + 0x50], 0
add esp, 0x18
mov dword [ebp + 0x48], eax
mov dword [ebp + 0x40], edi
test ecx, ecx
jle 0x1004ce40
mov ebx, dword [ebp + 0x24]
xor esi, esi
mov dword [ebp + 0x4c], esi
add ebx, 0x98
mov dword [ebp + 0x18], ecx
lea ebx, [ebx]
mov edx, dword [ebx + 0x10]
test edx, edx
je 0x1004ce27
mov ecx, dword [ebp + 0x44]
add dword [ebp + 0x48], edx
shl eax, 4
add eax, dword [ebp + 0x30]
mov dword [ebx - 4], eax
lea eax, [edi*8]
sub eax, edi
add edi, edx
mov dword [ebp + 0x40], edi
lea ecx, [ecx + eax*4]
mov eax, dword [ebp + 0x5c]
mov dword [ebx], ecx
mov edx, dword [eax + 0x54]
mov eax, dword [ebx + 0x28]
add edx, esi
mov dword [ebp + 0x14], edx
fld dword [edx + 0x10]
mov dword [ebx - 0x14], eax
mov eax, dword [ebx + 0x20]
fstp dword [ebx - 0x1c]
mov dword [ebx - 0x10], eax
mov dword [ebx - 0x18], 0
mov dword [ebx - 0xc], ecx
movzx eax, byte [edx + 0x14]
mov byte [ebx - 8], al
movzx eax, byte [edx + 0x18]
mov byte [ebx - 7], al
fld dword [edx + 0x10]
fld dword [ebp + 0x10]
fcom st(1)
fnstsw ax
test ah, 5
jp 0x1004cd23
mov esi, dword [ebx - 0x94]
mov eax, 0x100
mov edi, dword [ebx - 0x7c]
cwde
movzx ecx, byte [edi + esi + 6]
movsx ecx, cx
imul ecx, eax
movzx eax, byte [edi + esi + 7]
add cx, ax
mov eax, 0x100
movsx edx, cx
movzx ecx, byte [edi + esi + 4]
cwde
movsx ecx, cx
imul ecx, eax
movzx eax, byte [edi + esi + 5]
mov esi, dword [ebp + 0x4c]
add cx, ax
movsx eax, cx
sub eax, edx
mov dword [ebp + 0x20], eax
fild dword [ebp + 0x20]
fdivp st(2)
fxch st(1)
jmp 0x1004cd4a
mov edx, dword [ebx - 0x84]
mov eax, dword [ebx - 0x94]
movzx ecx, byte [edx + eax + 0x13]
movzx eax, byte [edx + eax + 0x12]
shl eax, 8
add ecx, eax
mov dword [ebp + 0x20], ecx
fild dword [ebp + 0x20]
fdivp st(2)
fxch st(1)
fchs
mov eax, dword [ebp + 0x5c]
xor ecx, ecx
fst dword [ebp + 0x20]
mov dword [ebp + 0xc], ecx
mov eax, dword [eax + 0x10]
mov dword [ebp + 8], eax
cmp dword [ebx + 0x20], ecx
jle 0x1004ce20
xor edi, edi
jmp 0x1004cd6a
fxch st(1)
mov eax, dword [ebx + 0x28]
lea esi, [ebx - 0x98]
push dword [eax + ecx*4]
push esi
call fcn.10055570
add esp, 8
lea ecx, [ebp + 0x1c]
fxch st(1)
push ecx
lea ecx, [ebp + 4]
push ecx
lea ecx, [ebp + 0x3c]
push ecx
lea ecx, [ebp]
push ecx
mov ecx, dword [ebp + 0x14]
sub esp, 0x10
fst dword [esp + 0xc]
fstp dword [esp + 8]
fild dword [ecx + 0x18]
fmul st(1)
fstp dword [esp + 4]
fimul dword [ecx + 0x14]
fstp dword [esp]
push eax
push esi
call fcn.10055920
mov eax, dword [ebp + 8]
lea edi, [edi + 0x10]
mov ecx, dword [ebp + 4]
add esp, 0x28
sub ecx, dword [ebp]
mov esi, dword [ebp + 0x14]
movzx edx, ax
mov eax, dword [ebx - 4]
add ecx, edx
dec cx
fld dword [ebp + 0x20]
add cx, word [esi + 0x14]
fld dword [ebp + 0x10]
mov word [eax + edi - 0xc], cx
mov ecx, dword [ebp + 0x1c]
sub ecx, dword [ebp + 0x3c]
mov eax, dword [ebx - 4]
add ecx, edx
dec cx
add cx, word [esi + 0x18]
mov word [eax + edi - 0xa], cx
mov eax, dword [ebx - 4]
movzx ecx, word [eax + edi - 0xa]
movzx eax, word [eax + edi - 0xc]
imul ecx, eax
add dword [ebp + 0x50], ecx
mov ecx, dword [ebp + 0xc]
inc ecx
mov dword [ebp + 0xc], ecx
cmp ecx, dword [ebx + 0x20]
jl 0x1004cd68
mov esi, dword [ebp + 0x4c]
fstp st(1)
jmp 0x1004ce22
fstp st(0)
mov eax, dword [ebp + 0x48]
fstp st(0)
mov edi, dword [ebp + 0x40]
add esi, 0x78
add ebx, 0xc4
mov dword [ebp + 0x4c], esi
sub dword [ebp + 0x18], 1
jne 0x1004cc60
fild dword [ebp + 0x50]
fsqrt
call fcn.10162460
mov ebx, dword [ebp + 0x5c]
inc eax
mov dword [ebp + 0x3c], eax
mov eax, dword [ebx + 0xc]
mov dword [ebx + 0x20], 0
test eax, eax
jg 0x1004cea9
fild dword [ebp + 0x3c]
fld dword [0x101af730]
fcomp st(1)
fnstsw ax
test ah, 0x41
jp 0x1004ce7a
fstp st(0)
mov eax, 0x1000
jmp 0x1004cea9
fld dword [0x101af72c]
fcomp st(1)
fnstsw ax
test ah, 0x41
jp 0x1004ce92
fstp st(0)
mov eax, 0x800
jmp 0x1004cea9
fcomp dword [0x101af728]
fnstsw ax
test ah, 1
mov eax, 0x400
je 0x1004cea9
mov eax, 0x200
push 0x2c
mov dword [ebx + 0x1c], eax
lea eax, [ebp - 0x38]
push 0
push eax
call fcn.10164250
mov eax, dword [ebx + 0x10]
mov esi, dword [ebx + 0x1c]
push 0x30
mov dword [ebp + 0x50], eax
mov dword [ebp + 0x3c], esi
call fcn.1003f1a0
sub esi, dword [ebp + 0x50]
mov edi, eax
mov dword [ebp + 0x4c], edi
lea ecx, [esi*8]
push ecx
call fcn.1003f1a0
add esp, 0x14
mov dword [ebp + 0x1c], eax
test edi, edi
je 0x1004cfa6
test eax, eax
je 0x1004cfa3
mov ecx, dword [ebp + 0x3c]
mov edx, dword [ebp + 0x50]
mov dword [ebp - 0x24], edx
lea edx, [esi - 1]
mov dword [ebp - 0x30], ecx
mov dword [ebp - 0x28], ecx
xor ecx, ecx
mov dword [ebp - 0x34], edi
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x1c], 1
mov dword [ebp - 0x18], 1
mov dword [ebp - 0x20], 0
test edx, edx
jle 0x1004cf43
lea ecx, [eax + 4]
mov dword [ebp + 0x3c], edx
lea eax, [ecx + 4]
mov dword [ecx], eax
lea ecx, [ecx + 8]
sub edx, 1
jne 0x1004cf30
mov eax, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x3c]
mov dword [eax + ecx*8 + 4], 0
lea ecx, [edi + 0x20]
mov dword [edi + 0x1c], eax
mov eax, 0x8000
sub eax, dword [ebp + 0x50]
mov dword [edi + 4], eax
lea eax, [esi*2 - 1]
cdq
idiv esi
mov dword [edi + 0xc], 1
mov dword [edi + 8], eax
xor eax, eax
mov dword [edi + 0x10], 0
mov dword [edi + 0x18], ecx
mov dword [edi], esi
mov dword [edi + 0x14], esi
mov word [ecx], ax
mov word [edi + 0x22], ax
lea eax, [edi + 0x28]
mov dword [edi + 0x24], eax
mov word [eax], si
mov eax, 0xffff
mov word [edi + 0x2a], ax
mov dword [edi + 0x2c], 0
jmp 0x1004cfb9
push edi
jmp 0x1004cfab
test eax, eax
je 0x1004cfb3
push eax
call fcn.1003f1d0
add esp, 4
mov edi, dword [ebp - 0x34]
mov dword [ebp + 0x4c], edi
xor eax, eax
mov dword [ebp + 0x38], 0
mov dword [ebp + 0x34], 0
mov dword [ebp + 0x48], eax
mov dword [ebp + 0x3c], eax
mov esi, dword [ebx + 0x40]
mov byte [ebp - 4], 8
mov dword [ebp + 0x50], esi
test esi, esi
jle 0x1004cff8
mov eax, 8
cmp esi, 8
jl 0x1004cfe9
mov eax, esi
shl eax, 4
push eax
call fcn.1003f1a0
add esp, 4
mov dword [ebp + 0x48], eax
mov ecx, esi
shl ecx, 4
push ecx
push 0
push eax
call fcn.10164250
add esp, 0xc
cmp dword [ebx + 0x40], 0
jle 0x1004d047
mov edx, dword [ebp + 0x48]
xor ecx, ecx
add edx, 6
xor edi, edi
lea esp, [esp]
mov eax, dword [ebx + 0x48]
lea ecx, [ecx + 0x1c]
inc edi
lea edx, [edx + 0x10]
movzx eax, word [ecx + eax - 0x1c]
mov word [edx - 0x12], ax
mov eax, dword [ebx + 0x48]
movzx eax, word [ecx + eax - 0x1a]
mov word [edx - 0x10], ax
cmp edi, dword [ebx + 0x40]
jl 0x1004d020
mov edi, dword [ebp + 0x4c]
push esi
push dword [ebp + 0x48]
push edi
call fcn.10055360
add esp, 0xc
test esi, esi
jle 0x1004d0a6
mov edx, dword [ebp + 0x48]
xor esi, esi
mov eax, dword [ebp + 0x50]
add edx, 0xa
cmp dword [edx + 2], 0
je 0x1004d098
mov eax, dword [ebx + 0x48]
movzx ecx, word [edx - 2]
mov word [esi + eax + 4], cx
mov eax, dword [ebx + 0x48]
movzx ecx, word [edx]
mov word [esi + eax + 6], cx
movzx eax, word [edx]
movzx ecx, word [edx - 4]
add ecx, eax
mov eax, dword [ebx + 0x20]
cmp eax, ecx
jge 0x1004d092
mov eax, ecx
mov dword [ebx + 0x20], eax
mov eax, dword [ebp + 0x50]
add esi, 0x1c
add edx, 0x10
sub eax, 1
mov dword [ebp + 0x50], eax
jne 0x1004d063
mov eax, dword [ebp + 0x48]
mov byte [ebp - 4], 9
test eax, eax
je 0x1004d0ba
push eax
call fcn.1003f1d0
add esp, 4
mov esi, dword [ebp + 0x2c]
mov byte [ebp - 4], 7
test esi, esi
jle 0x1004d12c
mov esi, dword [ebp + 0x24]
mov ecx, dword [ebp + 0x2c]
add esi, 0xa8
mov dword [ebp + 0x40], ecx
mov eax, dword [esi]
test eax, eax
je 0x1004d11d
push eax
push dword [esi - 0x14]
push edi
call fcn.10055360
xor edi, edi
add esp, 0xc
cmp dword [esi], edi
jle 0x1004d11a
xor ecx, ecx
nop
mov eax, dword [esi - 0x14]
cmp dword [eax + ecx + 0xc], 0
je 0x1004d112
movzx edx, word [eax + ecx + 0xa]
movzx eax, word [eax + ecx + 6]
add edx, eax
mov eax, dword [ebx + 0x20]
cmp eax, edx
jge 0x1004d10f
mov eax, edx
mov dword [ebx + 0x20], eax
inc edi
add ecx, 0x10
cmp edi, dword [esi]
jl 0x1004d0f0
mov edi, dword [ebp + 0x4c]
add esi, 0xc4
sub dword [ebp + 0x40], 1
jne 0x1004d0d4
mov esi, dword [ebp + 0x2c]
test byte [ebx + 4], 1
mov eax, dword [ebx + 0x20]
jne 0x1004d15a
lea ecx, [eax - 1]
mov eax, ecx
sar eax, 1
or ecx, eax
mov eax, ecx
sar eax, 2
or ecx, eax
mov eax, ecx
sar eax, 4
or ecx, eax
mov eax, ecx
sar eax, 8
or ecx, eax
mov eax, ecx
sar eax, 0x10
or eax, ecx
lea ecx, [eax + 1]
mov eax, dword [ebx + 0x1c]
mov dword [ebp + 0x3c], eax
fild dword [ebp + 0x3c]
mov dword [ebp + 0x1c], ecx
mov dword [ebx + 0x20], ecx
fld1
fld st(0)
imul ecx, eax
fdivrp st(2)
push ecx
fidiv dword [ebp + 0x1c]
fxch st(1)
fstp dword [ebx + 0x24]
fstp dword [ebx + 0x28]
call fcn.1003f1a0
mov ecx, dword [ebx + 0x1c]
imul ecx, dword [ebx + 0x20]
mov dword [ebx + 0x14], eax
push ecx
push 0
push eax
call fcn.10164250
mov eax, dword [ebx + 0x14]
add esp, 0x10
mov dword [ebp - 0x14], eax
mov eax, dword [ebx + 0x20]
mov dword [ebp - 0x2c], eax
test esi, esi
jle 0x1004d30a
mov esi, dword [ebp + 0x24]
xor eax, eax
mov ecx, dword [ebp + 0x2c]
mov dword [ebp + 0x18], eax
mov dword [ebp + 0x48], esi
mov dword [ebp + 0x20], ecx
mov edi, dword [ebx + 0x54]
add edi, eax
cmp dword [esi + 0xa8], 0
je 0x1004d2e9
push dword [esi + 0x94]
lea eax, [esi + 0x7c]
push 1
push eax
lea eax, [ebp - 0x38]
push esi
push eax
call fcn.10055d70
fld dword [edi + 0x44]
add esp, 0x14
fld1
fucomp st(1)
fnstsw ax
test ah, 0x44
jnp 0x1004d2d7
xor ecx, ecx
mov dword [ebp + 0x3c], ecx
fild dword [ebp + 0x3c]
test ecx, ecx
jns 0x1004d210
fadd dword [0x101a87b0]
fnstcw word [ebp + 0x4e]
movzx eax, word [ebp + 0x4e]
or eax, 0xc00
mov dword [ebp + 0x3c], eax
fmul st(1)
fldcw word [ebp + 0x3c]
fistp qword [ebp + 0x38]
mov eax, dword [ebp + 0x38]
fldcw word [ebp + 0x4e]
cmp eax, 0xff
jbe 0x1004d23b
mov eax, 0xff
jmp 0x1004d23e
movzx eax, al
mov byte [ebp + ecx - 0x170], al
inc ecx
cmp ecx, 0x100
jb 0x1004d200
mov ecx, dword [esi + 0x94]
xor eax, eax
fstp st(0)
mov dword [ebp + 0x50], eax
cmp dword [esi + 0xa8], eax
jle 0x1004d2d9
lea ebx, [ecx + 6]
cmp dword [ebx + 6], 0
je 0x1004d2c3
mov eax, dword [ebp + 0x5c]
movzx edx, word [ebx + 4]
movzx edi, word [ebx]
movzx esi, word [ebx - 2]
mov ecx, dword [eax + 0x1c]
movzx eax, word [ebx + 2]
imul edx, ecx
mov dword [ebp + 0x40], ecx
mov ecx, dword [ebp + 0x5c]
add edx, dword [ecx + 0x14]
add edx, eax
test edi, edi
je 0x1004d2bd
mov eax, dword [ebp + 0x40]
xor ecx, ecx
test esi, esi
je 0x1004d2b6
lea esp, [esp]
movzx eax, byte [ecx + edx]
mov al, byte [ebp + eax - 0x170]
mov byte [ecx + edx], al
inc ecx
cmp ecx, esi
jl 0x1004d2a0
mov eax, dword [ebp + 0x40]
dec edi
add edx, eax
test edi, edi
jg 0x1004d296
mov esi, dword [ebp + 0x48]
mov eax, dword [ebp + 0x50]
inc eax
add ebx, 0x10
mov dword [ebp + 0x50], eax
cmp eax, dword [esi + 0xa8]
jl 0x1004d266
mov ebx, dword [ebp + 0x5c]
jmp 0x1004d2d9
fstp st(0)
mov eax, dword [ebp + 0x18]
mov ecx, dword [ebp + 0x20]
mov dword [esi + 0x94], 0
add eax, 0x78
add esi, 0xc4
sub ecx, 1
mov dword [ebp + 0x18], eax
mov dword [ebp + 0x48], esi
mov dword [ebp + 0x20], ecx
jne 0x1004d1c1
mov edi, dword [ebp - 0x34]
mov esi, dword [ebp + 0x2c]
push dword [ebp - 0x10]
call fcn.1003f1d0
push edi
call fcn.1003f1d0
mov eax, dword [ebp + 0x30]
add esp, 8
test eax, eax
je 0x1004d341
push eax
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x50], 0
call fcn.1003f1d0
add esp, 4
xor eax, eax
mov dword [ebp + 0x30], eax
mov dword [ebp - 0x48], eax
test esi, esi
jle 0x1004d621
mov edi, dword [ebp + 0x24]
xor ecx, ecx
fld dword [0x101aad24]
add edi, 4
fld dword [0x101a8790]
mov dword [ebp + 0x4c], ecx
mov dword [ebp + 0x48], edi
mov dword [ebp + 0x18], esi
jmp 0x1004d36d
mov ebx, dword [ebp + 0x5c]
fxch st(1)
cmp dword [edi + 0xa4], 0
je 0x1004d5fc
mov eax, dword [ebx + 0x54]
mov esi, dword [ebp + 0x48]
add eax, ecx
mov edi, dword [edi + 0x18]
mov dword [ebp + 0x1c], eax
mov eax, dword [eax + 0x74]
mov esi, dword [esi]
mov dword [ebp + 0x50], eax
mov eax, 0x100
cwde
movzx ecx, byte [edi + esi + 4]
movzx edx, byte [edi + esi + 5]
movsx ecx, cx
imul ecx, eax
mov eax, 0x100
cwde
add dx, cx
movzx ecx, byte [edi + esi + 6]
movsx ecx, cx
imul ecx, eax
movsx ebx, dx
movzx edx, byte [edi + esi + 7]
mov eax, ebx
mov esi, dword [ebp + 0x1c]
mov dword [ebp - 0x54], ebx
add dx, cx
movsx ecx, dx
sub eax, ecx
mov dword [ebp - 0x58], ecx
mov dword [ebp + 0x3c], eax
fild dword [ebp + 0x3c]
fdivr dword [esi + 0x10]
fild dword [ebp - 0x54]
fld dword [ebp + 0x10]
fcom st(1)
fnstsw ax
test ah, 5
jp 0x1004d3f3
fld1
fld st(0)
jmp 0x1004d3f9
fld st(4)
fld1
fxch st(1)
fxch st(3)
fmul st(4)
faddp st(3)
fxch st(2)
call fcn.10162460
mov dword [ebp + 0x3c], eax
fild dword [ebp + 0x3c]
fstp dword [ebp + 0x1c]
fild dword [ebp - 0x58]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 0x41
jne 0x1004d421
fstp st(4)
jmp 0x1004d425
fstp st(1)
fxch st(3)
fxch st(3)
fmulp st(1)
faddp st(2)
fxch st(1)
call fcn.10162460
cmp byte [esi + 0x3c], 0
mov edi, dword [ebp + 0x50]
mov dword [ebp + 0x3c], eax
fild dword [ebp + 0x3c]
fstp dword [ebp + 0x3c]
jne 0x1004d470
mov ecx, edi
fstp st(0)
call fcn.1004bfe0
fld dword [esi + 0x10]
mov ebx, dword [ebp + 0x5c]
fstp dword [edi + 0x10]
fld dword [ebp + 0x1c]
fstp dword [edi + 0x4c]
fld dword [ebp + 0x3c]
fstp dword [edi + 0x50]
fld dword [0x101a8790]
mov dword [edi + 0x3c], esi
mov dword [edi + 0x38], ebx
jmp 0x1004d473
mov ebx, dword [ebp + 0x5c]
inc word [edi + 0x40]
fld dword [esi + 0x28]
fst dword [ebp + 4]
fld dword [edi + 0x4c]
fadd st(2)
call fcn.10162460
mov edi, dword [ebp + 0x48]
xor ecx, ecx
mov dword [ebp + 0x3c], eax
fild dword [ebp + 0x3c]
mov dword [ebp + 0x40], ecx
fadd dword [esi + 0x2c]
fst dword [ebp + 8]
cmp dword [edi + 0xa4], ecx
jle 0x1004d5f3
xor edx, edx
mov dword [ebp + 0x48], edx
jmp 0x1004d4b4
fxch st(1)
fxch st(2)
fxch st(1)
mov eax, dword [edi + 0xbc]
mov eax, dword [eax + ecx*4]
mov ecx, dword [edi + 0x94]
mov dword [ebp], eax
fld dword [edx + ecx + 0x10]
fld dword [esi + 0x34]
fld dword [esi + 0x38]
fxch st(2)
fcom st(1)
fnstsw ax
test ah, 5
jnp 0x1004d514
fstp st(1)
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x1004d518
fxch st(1)
cmp byte [esi + 0x1c], 0
fld st(0)
fsubrp st(2)
fxch st(1)
fmulp st(4)
je 0x1004d50e
fxch st(3)
call fcn.10162460
mov ecx, dword [edi + 0x94]
mov edx, dword [ebp + 0x48]
mov dword [ebp + 0x3c], eax
fild dword [ebp + 0x3c]
fxch st(3)
fxch st(3)
faddp st(2)
jmp 0x1004d51c
fstp st(2)
jmp 0x1004d4e8
fstp st(1)
fstp st(3)
mov eax, dword [ebx + 0x20]
sub esp, 0x24
mov dword [ebp + 0x1c], eax
mov eax, dword [ebx + 0x1c]
mov dword [ebp + 0x3c], eax
fild dword [ebp + 0x3c]
movzx eax, word [edx + ecx]
mov dword [ebp + 0x3c], eax
movzx eax, word [edx + ecx + 2]
fld1
fld st(0)
fdivrp st(2)
fidiv dword [ebp + 0x1c]
fild dword [ebp + 0x3c]
mov dword [ebp + 0x3c], eax
movzx eax, word [edx + ecx + 4]
fmul st(2)
fild dword [ebp + 0x3c]
mov dword [ebp + 0x3c], eax
movzx eax, word [edx + ecx + 6]
fmul st(2)
fild dword [ebp + 0x3c]
mov dword [ebp + 0x3c], eax
fmulp st(4)
fild dword [ebp + 0x3c]
fmulp st(3)
fxch st(6)
fstp dword [esp + 0x20]
fxch st(1)
fstp dword [esp + 0x1c]
fxch st(1)
fstp dword [esp + 0x18]
fxch st(3)
fstp dword [esp + 0x14]
fxch st(2)
fstp dword [esp + 0x10]
fld dword [edx + ecx + 0x18]
fadd st(2)
fstp dword [esp + 0xc]
fld dword [edx + ecx + 0x14]
fadd st(1)
fstp dword [esp + 8]
fld dword [edx + ecx + 0xc]
faddp st(2)
fxch st(1)
fstp dword [esp + 4]
fadd dword [edx + ecx + 8]
mov ecx, dword [ebp + 0x50]
fstp dword [esp]
push dword [ebp]
call fcn.1004a460
mov ecx, dword [ebp + 0x40]
mov edx, dword [ebp + 0x48]
inc ecx
fld dword [ebp + 4]
add edx, 0x1c
fld dword [0x101a8790]
fld dword [ebp + 8]
mov dword [ebp + 0x40], ecx
mov dword [ebp + 0x48], edx
cmp ecx, dword [edi + 0xa4]
jl 0x1004d4ae
mov ecx, dword [ebp + 0x4c]
fstp st(2)
fstp st(0)
fstp st(0)
fld dword [0x101a8790]
jmp 0x1004d5fe
mov ecx, dword [ebp + 0x4c]
fstp st(1)
fstp st(0)
jmp 0x1004d5fe
fstp st(1)
fld dword [0x101aad24]
add edi, 0xc4
add ecx, 0x78
mov dword [ebp + 0x48], edi
sub dword [ebp + 0x18], 1
mov dword [ebp + 0x4c], ecx
jne 0x1004d368
fstp st(1)
fstp st(0)
mov ebx, dword [ebp + 0x2c]
test ebx, ebx
jle 0x1004d667
mov esi, dword [ebp + 0x24]
add esi, 0xb4
mov eax, dword [esi + 0xc]
mov byte [ebp - 4], 0xa
test eax, eax
je 0x1004d645
push eax
call fcn.1003f1d0
add esp, 4
mov eax, dword [esi]
mov byte [ebp - 4], 0xb
test eax, eax
je 0x1004d658
push eax
call fcn.1003f1d0
add esp, 4
add esi, 0xc4
mov byte [ebp - 4], 7
sub ebx, 1
jne 0x1004d631
push dword [ebp + 0x5c]
call fcn.1004c340
add esp, 4
mov bl, 1
mov eax, dword [ebp + 0x44]
mov byte [ebp - 4], 0xc
test eax, eax
je 0x1004d688
push eax
call fcn.1003f1d0
add esp, 4
mov eax, dword [ebp + 0x30]
mov byte [ebp - 4], 0xd
test eax, eax
je 0x1004d69c
push eax
call fcn.1003f1d0
add esp, 4
mov edi, dword [ebp + 0x28]
mov byte [ebp - 4], 0xe
test edi, edi
je 0x1004d6b0
push edi
call fcn.1003f1d0
add esp, 4
mov eax, dword [ebp + 0x24]
mov dword [ebp - 4], 0xf
test eax, eax
je 0x1004d6c7
push eax
call fcn.1003f1d0
add esp, 4
mov ecx, dword [ebp - 0xc]
mov al, bl
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
lea esp, [ebp + 0x54]
pop ebp
ret