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

Disassembly:
sub esp, 0x58
push ebx
mov ebx, dword [esp + 0x60]
push ebp
mov ebp, dword [esp + 0x70]
push esi
mov eax, dword [ebx + 0xd8]
mov esi, dword [ebx + 0x80]
mov ecx, dword [ebx + 0xac]
mov edx, dword [ebx + 0xd4]
mov dword [esp + 0x20], eax
or eax, dword [esp + 0x84]
test al, 1
mov dword [esp + 0xc], ecx
mov eax, dword [esp + 0x7c]
sete byte [esp + 0x68]
mov dword [esp + 0x24], eax
add eax, ebp
mov dword [esp + 0x30], edx
push edi
mov edi, dword [esp + 0x7c]
cmp eax, esi
jle 0x52402d
mov eax, esi
sub eax, ebp
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x84]
mov edx, dword [ebx + 0x84]
mov dword [esp + 0x2c], eax
add eax, edi
cmp eax, edx
jle 0x52404c
mov eax, edx
sub eax, edi
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x28]
test eax, eax
jle 0x52522d
add eax, ebp
js 0x52522d
mov eax, dword [esp + 0x2c]
add eax, edi
js 0x52522d
cmp ebp, esi
jge 0x52522d
cmp edi, edx
jge 0x52522d
test ebp, ebp
jns 0x524086
mov eax, ebp
neg eax
jmp 0x524088
xor eax, eax
mov dword [esp + 0x40], eax
test edi, edi
jns 0x524096
mov edx, edi
neg edx
jmp 0x524098
xor edx, edx
mov dword [esp + 0x3c], edx
cmp edx, dword [esp + 0x2c]
jge 0x52522d
fld qword [0x571bc8]
add ebp, eax
fst qword [esp + 0x58]
fld dword [0x555f40]
imul eax, eax, 3
fst dword [esp + 0x38]
fld1
fst qword [esp + 0x60]
mov dword [esp + 0x54], ebp
mov dword [esp + 0x44], eax
mov dword [esp + 0x18], 0xff
cmp dword [ebx + 0xe8], 0
lea eax, [edi + edx]
mov dword [esp + 0x30], eax
je 0x5240f0
mov eax, dword [ebx + 0x84]
sub eax, edx
sub eax, edi
dec eax
mov edi, dword [ebx + 0xcc]
mov esi, dword [ebx + 0xd4]
imul ebp, esi
imul edi, eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x20], eax
add edi, ebp
mov ebp, edx
imul ebp, dword [esp + 0x74]
add edi, dword [ebx + 0xc8]
add ebp, dword [esp + 0x44]
add ebp, dword [esp + 0x70]
cmp eax, dword [esp + 0x28]
jge 0x525210
mov eax, dword [esp + 0x78]
add eax, dword [esp + 0x20]
cmp dword [ebx + 0xe0], 0
je 0x524168
push dword [esp + 0x30]
fstp st(1)
push eax
fstp st(1)
push ebx
fstp st(0)
call fcn.0051e6ac
fld qword [esp + 0x64]
mov ecx, eax
fld dword [esp + 0x44]
add esp, 0xc
mov esi, dword [ebx + 0xd4]
fld qword [esp + 0x60]
mov dword [esp + 0x10], ecx
cmp dword [ebx + 0xe4], 0
je 0x5242a9
movzx ecx, byte [ebp + 1]
fstp st(1)
movzx edx, byte [ebp + 2]
fstp st(0)
movzx eax, byte [ebp]
add edx, ecx
add edx, eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x88], edx
fild dword [esp + 0x88]
sar eax, 0x18
movzx eax, al
fstp dword [esp + 0x88]
fdivr dword [esp + 0x88]
fstp dword [esp + 0x88]
fld dword [esp + 0x88]
mov dword [esp + 0x88], eax
fild dword [esp + 0x88]
fstp dword [esp + 0x88]
fmul dword [esp + 0x88]
call fcn.004e3060
mov ecx, dword [esp + 0x10]
mov edx, eax
movzx eax, byte [edi + 1]
and ecx, 0xffffff
shl edx, 0x18
mov dword [esp + 0x88], eax
or edx, ecx
movzx eax, byte [edi + 2]
movzx ecx, byte [edi]
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x88]
cmp esi, 4
jne 0x524268
movzx eax, byte [edi + 3]
shl eax, 8
or eax, ecx
shl eax, 8
or eax, dword [esp + 0x88]
shl eax, 8
or eax, dword [esp + 0x80]
push eax
mov eax, dword [esp + 0x7c]
add eax, dword [esp + 0x24]
push edx
push dword [esp + 0x38]
push eax
call dword [ebx + 0xb8]
mov ecx, eax
mov edx, eax
sar ecx, 0x10
mov dword [esp + 0x88], ecx
mov ecx, eax
sar edx, 8
sar ecx, 0x18
mov byte [edi + 3], cl
mov ecx, dword [esp + 0x88]
jmp 0x52429c
or ecx, 0xffffff00
shl ecx, 8
or ecx, eax
mov eax, dword [esp + 0x78]
add eax, dword [esp + 0x20]
shl ecx, 8
or ecx, dword [esp + 0x80]
push ecx
push edx
push dword [esp + 0x38]
push eax
call dword [ebx + 0xb8]
mov edx, eax
mov ecx, eax
sar edx, 8
sar ecx, 0x10
mov byte [edi + 2], al
mov byte [edi + 1], dl
mov byte [edi], cl
jmp 0x524dea
mov eax, dword [esp + 0x24]
test al, 2
je 0x52433c
movzx eax, byte [ebp + 1]
fstp st(0)
movzx ecx, byte [ebp + 2]
add ecx, eax
movzx eax, byte [ebp]
add ecx, eax
mov dword [esp + 0x88], ecx
fild dword [esp + 0x88]
mov ecx, dword [esp + 0x10]
fstp dword [esp + 0x88]
fld dword [esp + 0x88]
fdivrp st(2)
fxch st(1)
fstp dword [esp + 0x88]
fcomp dword [esp + 0x88]
fnstsw ax
test ah, 5
jp 0x524312
xor byte [edi + 2], cl
mov eax, ecx
sar eax, 8
xor byte [edi + 1], al
mov eax, ecx
sar eax, 0x10
jmp 0x524335
cmp byte [esp + 0x6c], 0
je 0x5251d0
mov al, byte [ebx + 0x104]
xor byte [edi + 2], al
mov al, byte [ebx + 0x108]
xor byte [edi + 1], al
mov al, byte [ebx + 0x10c]
xor byte [edi], al
jmp 0x5251d0
test dword [ebx + 0xd8], 0x100
fstp st(1)
je 0x5246a6
mov eax, ecx
fstp st(0)
sar eax, 0x18
cmp byte [esp + 0x6c], 0
movzx edx, al
mov dword [esp + 0x84], edx
mov dword [esp + 0x14], edx
mov dword [esp + 0x1c], edx
je 0x524685
mov esi, dword [ebx + 0x110]
movzx eax, byte [ebp + 2]
mov dword [esp + 0x80], esi
mov dword [esp + 0x88], eax
cmp esi, 0xc0
jl 0x52452e
mov eax, edx
xor edx, edx
imul eax, dword [esp + 0x88]
div dword [esp + 0x18]
mov dword [esp + 0x88], eax
test eax, eax
jne 0x5243b9
mov eax, dword [ebx + 0x104]
jmp 0x5243f3
mov edx, 0xff
sub edx, eax
movzx eax, cl
imul eax, dword [esp + 0x88]
mov ecx, dword [ebx + 0x104]
imul edx, esi
imul eax, eax, 0xff
imul ecx, edx
add eax, ecx
imul ecx, dword [esp + 0x88], 0xff
add ecx, edx
cdq
idiv ecx
mov ecx, dword [esp + 0x10]
mov esi, dword [esp + 0x84]
xor edx, edx
mov byte [edi + 2], al
movzx eax, byte [ebp + 1]
imul eax, esi
div dword [esp + 0x18]
mov dword [esp + 0x88], eax
test eax, eax
jne 0x52441d
mov ecx, dword [ebx + 0x108]
jmp 0x52446c
mov eax, ecx
sar eax, 8
cmp dword [ebx + 0x110], 0
movzx ecx, al
je 0x52446c
imul ecx, dword [esp + 0x88]
mov edx, 0xff
sub edx, dword [esp + 0x88]
imul edx, dword [ebx + 0x110]
mov eax, dword [ebx + 0x108]
imul ecx, ecx, 0xff
imul eax, edx
add eax, ecx
imul ecx, dword [esp + 0x88], 0xff
add ecx, edx
cdq
idiv ecx
mov ecx, eax
mov byte [edi + 1], cl
xor edx, edx
movzx eax, byte [ebp]
mov ecx, 0xff
imul eax, esi
div ecx
mov esi, eax
test esi, esi
jne 0x52448d
mov ecx, dword [ebx + 0x10c]
jmp 0x5244cf
mov eax, dword [esp + 0x10]
sar eax, 0x10
cmp dword [ebx + 0x110], 0
movzx ecx, al
je 0x5244cf
mov eax, dword [ebx + 0x10c]
mov edx, 0xff
sub edx, esi
imul ecx, esi
imul edx, dword [ebx + 0x110]
imul ecx, ecx, 0xff
imul eax, edx
add eax, ecx
imul ecx, esi, 0xff
add ecx, edx
cdq
idiv ecx
mov ecx, eax
mov byte [edi], cl
movzx eax, byte [ebp + 1]
movzx ecx, byte [ebp + 2]
add ecx, eax
movzx eax, byte [ebp]
add ecx, eax
mov dword [esp + 0x88], ecx
fild dword [esp + 0x88]
fstp dword [esp + 0x88]
fdivr dword [esp + 0x88]
fild dword [esp + 0x1c]
fstp qword [esp + 0x4c]
fmul qword [esp + 0x4c]
call fcn.004e3060
mov esi, 0xff
mov edx, esi
sub edx, eax
imul eax, eax, 0xff
imul edx, dword [ebx + 0x110]
add eax, edx
cdq
idiv esi
jmp 0x52467d
movzx eax, byte [ebp + 1]
add eax, dword [esp + 0x88]
movzx ecx, byte [ebp]
add ecx, eax
mov dword [esp + 0x88], ecx
fild dword [esp + 0x88]
fstp dword [esp + 0x88]
fdivr dword [esp + 0x88]
fild dword [esp + 0x14]
fstp qword [esp + 0x4c]
fmul qword [esp + 0x4c]
call fcn.004e3060
mov esi, eax
mov eax, dword [esp + 0x10]
test esi, esi
jne 0x52457e
mov ecx, dword [ebx + 0x104]
jmp 0x5245bf
cmp dword [esp + 0x80], 0
movzx ecx, al
je 0x5245bf
mov eax, dword [ebx + 0x104]
mov edx, 0xff
sub edx, esi
imul ecx, esi
imul edx, dword [esp + 0x80]
imul ecx, ecx, 0xff
imul eax, edx
add eax, ecx
imul ecx, esi, 0xff
add ecx, edx
cdq
idiv ecx
mov ecx, eax
mov eax, dword [esp + 0x10]
mov byte [edi + 2], cl
test esi, esi
jne 0x5245ce
mov ecx, dword [ebx + 0x108]
jmp 0x52460c
sar eax, 8
cmp dword [ebx + 0x110], 0
movzx ecx, al
je 0x52460c
mov eax, dword [ebx + 0x108]
mov edx, 0xff
sub edx, esi
imul ecx, esi
imul edx, dword [ebx + 0x110]
imul ecx, ecx, 0xff
imul eax, edx
add eax, ecx
imul ecx, esi, 0xff
add ecx, edx
cdq
idiv ecx
mov ecx, eax
mov byte [edi + 1], cl
test esi, esi
jne 0x52461b
mov ecx, dword [ebx + 0x10c]
jmp 0x52465d
mov eax, dword [esp + 0x10]
sar eax, 0x10
cmp dword [ebx + 0x110], 0
movzx ecx, al
je 0x52465d
mov eax, dword [ebx + 0x10c]
mov edx, 0xff
sub edx, esi
imul ecx, esi
imul edx, dword [ebx + 0x110]
imul ecx, ecx, 0xff
imul eax, edx
add eax, ecx
imul ecx, esi, 0xff
add ecx, edx
cdq
idiv ecx
mov ecx, eax
mov eax, 0xff
mov byte [edi], cl
sub eax, esi
imul ecx, esi, 0xff
imul eax, dword [ebx + 0x110]
add eax, ecx
mov ecx, 0xff
cdq
idiv ecx
mov ecx, dword [esp + 0x10]
mov edx, eax
jmp 0x524699
mov eax, ecx
mov byte [edi + 2], cl
sar eax, 8
fstp st(0)
mov byte [edi + 1], al
mov eax, ecx
sar eax, 0x10
mov byte [edi], al
push 3
pop esi
mov eax, edi
mov byte [eax + esi], dl
jmp 0x5251d0
test al, 8
je 0x52475e
cmp dword [esp + 0x34], 4
jne 0x5251cc
movzx eax, byte [ebp + 1]
movzx ecx, byte [ebp + 2]
add ecx, eax
movzx eax, byte [ebp]
add ecx, eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x88], ecx
fild dword [esp + 0x88]
sar eax, 0x18
cmp byte [esp + 0x6c], 0
movzx eax, al
fstp dword [esp + 0x88]
fld dword [esp + 0x88]
fdivrp st(2)
fxch st(1)
fstp dword [esp + 0x88]
fld dword [esp + 0x88]
fsub st(1), st(0)
mov dword [esp + 0x88], eax
fild dword [esp + 0x88]
fstp dword [esp + 0x88]
fmul dword [esp + 0x88]
je 0x524736
fild dword [ebx + 0x110]
fstp qword [esp + 0x4c]
fld qword [esp + 0x4c]
jmp 0x524750
movzx eax, byte [edi + 3]
mov dword [esp + 0x88], eax
fild dword [esp + 0x88]
fstp qword [esp + 0x4c]
fld qword [esp + 0x4c]
fmulp st(2)
faddp st(1)
call fcn.004e30f0
jmp 0x524d3f
fstp st(0)
test al, 0x30
jne 0x524840
mov eax, ecx
mov edx, 0xff
sar eax, 8
fstp st(0)
movzx eax, al
mov dword [esp + 0x88], eax
mov eax, ecx
sar eax, 0x10
movzx esi, al
movzx eax, byte [ebp + 2]
movzx ecx, cl
sub edx, eax
imul ecx, eax
cmp byte [esp + 0x6c], 0
je 0x5247f2
mov eax, dword [ebx + 0x104]
imul eax, edx
add eax, ecx
mov ecx, 0xff
cdq
idiv ecx
mov edx, dword [esp + 0x88]
mov byte [edi + 2], al
mov eax, 0xff
movzx ecx, byte [ebp + 1]
sub eax, ecx
imul edx, ecx
imul eax, dword [ebx + 0x108]
mov ecx, 0xff
add eax, edx
cdq
idiv ecx
mov byte [edi + 1], al
mov eax, 0xff
movzx ecx, byte [ebp]
sub eax, ecx
imul eax, dword [ebx + 0x10c]
imul esi, ecx
jmp 0x524dde
movzx eax, byte [edi + 2]
imul eax, edx
add eax, ecx
mov ecx, 0xff
cdq
idiv ecx
mov byte [edi + 2], al
mov eax, ecx
movzx edx, byte [ebp + 1]
movzx ecx, byte [edi + 1]
sub eax, edx
imul edx, dword [esp + 0x88]
imul eax, ecx
mov ecx, 0xff
add eax, edx
cdq
idiv ecx
mov byte [edi + 1], al
mov eax, ecx
movzx edx, byte [ebp]
movzx ecx, byte [edi]
sub eax, edx
imul eax, ecx
imul esi, edx
jmp 0x524dde
mov edx, ecx
sar edx, 0x18
cmp byte [esp + 0x6c], 0
je 0x524d47
movzx eax, byte [ebp + 2]
mov esi, dword [ebx + 0x110]
mov dword [esp + 0x80], eax
movzx eax, dl
mov dword [esp + 0x88], eax
cmp esi, 0xc0
jl 0x524a17
mov dword [esp + 0x1c], eax
xor edx, edx
imul eax, dword [esp + 0x80]
div dword [esp + 0x18]
mov dword [esp + 0x80], eax
test eax, eax
jne 0x52489c
mov eax, dword [ebx + 0x104]
jmp 0x5248d6
mov edx, 0xff
sub edx, eax
movzx eax, cl
imul eax, dword [esp + 0x80]
mov ecx, dword [ebx + 0x104]
imul edx, esi
imul eax, eax, 0xff
imul ecx, edx
add eax, ecx
imul ecx, dword [esp + 0x80], 0xff
add ecx, edx
cdq
idiv ecx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x80], eax
xor edx, edx
movzx eax, byte [ebp + 1]
mov dword [esp + 0x4c], eax
imul eax, dword [esp + 0x88]
div dword [esp + 0x18]
mov dword [esp + 0x84], eax
test eax, eax
jne 0x52490d
mov ecx, dword [ebx + 0x108]
mov dword [esp + 0x84], ecx
jmp 0x52494f
mov edx, 0xff
sub edx, eax
mov eax, ecx
mov ecx, dword [ebx + 0x108]
sar eax, 8
movzx eax, al
imul eax, dword [esp + 0x84]
imul edx, esi
imul eax, eax, 0xff
imul ecx, edx
add eax, ecx
imul ecx, dword [esp + 0x84], 0xff
add ecx, edx
cdq
idiv ecx
mov dword [esp + 0x84], eax
movzx eax, byte [ebp]
xor edx, edx
mov dword [esp + 0x48], eax
mov ecx, 0xff
imul eax, dword [esp + 0x88]
div ecx
mov ecx, eax
mov dword [esp + 0x88], ecx
test ecx, ecx
jne 0x52497d
mov eax, dword [ebx + 0x10c]
jmp 0x5249b5
mov eax, dword [esp + 0x10]
mov edx, 0xff
sar eax, 0x10
sub edx, ecx
movzx eax, al
imul eax, ecx
mov ecx, dword [ebx + 0x10c]
imul edx, esi
imul eax, eax, 0xff
imul ecx, edx
add eax, ecx
imul ecx, dword [esp + 0x88], 0xff
add ecx, edx
cdq
idiv ecx
movzx ecx, byte [ebp + 2]
add ecx, dword [esp + 0x48]
add ecx, dword [esp + 0x4c]
mov dword [esp + 0x88], ecx
fild dword [esp + 0x88]
mov dword [esp + 0x14], eax
fstp dword [esp + 0x88]
fdivr dword [esp + 0x88]
fild dword [esp + 0x1c]
fstp qword [esp + 0x4c]
fmul qword [esp + 0x4c]
call fcn.004e3060
mov edx, 0xff
sub edx, eax
imul eax, eax, 0xff
imul edx, esi
mov esi, 0xff
add eax, edx
cdq
idiv esi
mov edx, eax
mov dword [esp + 0x1c], edx
jmp 0x524bb2
movzx eax, byte [ebp + 1]
add eax, dword [esp + 0x80]
movzx ecx, byte [ebp]
add ecx, eax
mov dword [esp + 0x80], ecx
fild dword [esp + 0x80]
fstp dword [esp + 0x80]
fld dword [esp + 0x80]
fild dword [esp + 0x88]
fstp dword [esp + 0x88]
fmul dword [esp + 0x88]
fdivrp st(1)
call fcn.004e3060
mov ecx, eax
mov dword [esp + 0x88], ecx
test ecx, ecx
jne 0x524a92
mov eax, dword [ebx + 0x104]
mov dword [esp + 0x80], eax
mov eax, dword [ebx + 0x108]
mov dword [esp + 0x84], eax
mov eax, dword [ebx + 0x10c]
jmp 0x524b8e
mov eax, dword [esp + 0x10]
movzx edx, al
mov dword [esp + 0x80], edx
test esi, esi
je 0x524ae9
mov eax, dword [ebx + 0x104]
mov edx, 0xff
sub edx, ecx
imul ecx, dword [esp + 0x80]
imul edx, esi
imul ecx, ecx, 0xff
imul eax, edx
add eax, ecx
imul ecx, dword [esp + 0x88], 0xff
add ecx, edx
cdq
idiv ecx
mov ecx, dword [esp + 0x88]
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x10]
sar eax, 8
movzx edx, al
mov dword [esp + 0x84], edx
test esi, esi
je 0x524b34
mov eax, dword [ebx + 0x108]
mov edx, 0xff
sub edx, ecx
imul ecx, dword [esp + 0x84]
imul edx, esi
imul ecx, ecx, 0xff
imul eax, edx
add eax, ecx
imul ecx, dword [esp + 0x88], 0xff
add ecx, edx
cdq
idiv ecx
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x10]
sar eax, 0x10
movzx ecx, al
mov dword [esp + 0x14], ecx
test esi, esi
jne 0x524b4f
mov ecx, dword [esp + 0x88]
jmp 0x524b92
imul ecx, dword [esp + 0x88]
mov edx, 0xff
sub edx, dword [esp + 0x88]
mov eax, dword [ebx + 0x10c]
imul edx, esi
imul ecx, ecx, 0xff
imul eax, edx
add eax, ecx
imul ecx, dword [esp + 0x88], 0xff
add ecx, edx
cdq
idiv ecx
mov ecx, dword [esp + 0x88]
mov dword [esp + 0x14], eax
mov eax, 0xff
sub eax, ecx
imul ecx, ecx, 0xff
imul eax, esi
mov esi, 0xff
add eax, ecx
cdq
idiv esi
mov edx, eax
mov dword [esp + 0x1c], eax
cmp dword [esp + 0x34], 3
jne 0x524c0e
movzx eax, byte [edi + 2]
mov ecx, esi
mov esi, dword [esp + 0x80]
sub ecx, edx
imul eax, ecx
imul esi, edx
add eax, esi
mov esi, 0xff
cdq
idiv esi
mov edx, dword [esp + 0x84]
imul edx, dword [esp + 0x1c]
mov byte [edi + 2], al
movzx eax, byte [edi + 1]
imul eax, ecx
add eax, edx
cdq
idiv esi
mov byte [edi + 1], al
movzx eax, byte [edi]
imul eax, ecx
mov ecx, dword [esp + 0x14]
imul ecx, dword [esp + 0x1c]
add eax, ecx
mov ecx, esi
jmp 0x524de5
movzx ecx, byte [edi + 3]
mov dword [esp + 0x88], ecx
test edx, edx
jne 0x524c23
movzx eax, byte [edi + 2]
jmp 0x524c6c
test ecx, ecx
jne 0x524c30
mov eax, dword [esp + 0x80]
jmp 0x524c6c
movzx eax, byte [edi + 2]
sub esi, edx
imul eax, esi
imul esi, dword [esp + 0x88]
imul eax, ecx
mov ecx, dword [esp + 0x80]
imul ecx, edx
imul ecx, ecx, 0xff
add eax, ecx
imul ecx, edx, 0xff
cdq
add esi, ecx
mov ecx, dword [esp + 0x88]
idiv esi
mov edx, dword [esp + 0x1c]
mov byte [edi + 2], al
test edx, edx
jne 0x524c79
movzx eax, byte [edi + 1]
jmp 0x524cc0
test ecx, ecx
jne 0x524c86
mov eax, dword [esp + 0x84]
jmp 0x524cc0
movzx eax, byte [edi + 1]
mov esi, 0xff
sub esi, edx
imul eax, esi
imul esi, dword [esp + 0x88]
imul eax, ecx
mov ecx, dword [esp + 0x84]
imul ecx, edx
imul ecx, ecx, 0xff
add eax, ecx
imul ecx, edx, 0xff
cdq
add esi, ecx
idiv esi
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x88]
mov byte [edi + 1], al
test edx, edx
jne 0x524cd3
movzx eax, byte [edi]
jmp 0x524d1a
test ecx, ecx
jne 0x524cdd
mov eax, dword [esp + 0x14]
jmp 0x524d1a
movzx eax, byte [edi]
mov esi, 0xff
sub esi, edx
imul eax, esi
imul esi, dword [esp + 0x88]
imul eax, ecx
mov ecx, dword [esp + 0x14]
imul ecx, edx
imul ecx, ecx, 0xff
add eax, ecx
imul ecx, edx, 0xff
cdq
add esi, ecx
mov ecx, dword [esp + 0x88]
idiv esi
mov edx, dword [esp + 0x1c]
mov byte [edi], al
mov eax, dword [esp + 0x24]
test al, 0x10
je 0x524dea
mov esi, 0xff
mov eax, esi
sub eax, edx
imul eax, ecx
imul ecx, edx, 0xff
add eax, ecx
cdq
idiv esi
mov byte [edi + 3], al
jmp 0x524dea
cmp dword [esp + 0x34], 3
jne 0x524df3
movzx eax, byte [ebp + 2]
mov ecx, 0xff
movzx esi, dl
fstp st(0)
imul eax, esi
xor edx, edx
div ecx
mov edx, ecx
movzx ecx, byte [edi + 2]
sub edx, eax
imul edx, ecx
mov ecx, dword [esp + 0x10]
movzx ecx, cl
imul eax, ecx
mov ecx, 0xff
add eax, edx
cdq
idiv ecx
xor edx, edx
mov byte [edi + 2], al
movzx eax, byte [ebp + 1]
imul eax, esi
div ecx
mov edx, ecx
movzx ecx, byte [edi + 1]
sub edx, eax
imul edx, ecx
mov ecx, dword [esp + 0x10]
sar ecx, 8
movzx ecx, cl
imul eax, ecx
mov ecx, 0xff
add eax, edx
cdq
idiv ecx
xor edx, edx
mov byte [edi + 1], al
movzx eax, byte [ebp]
imul eax, esi
div ecx
mov ecx, dword [esp + 0x10]
sar ecx, 0x10
movzx esi, cl
mov ecx, 0xff
imul esi, eax
sub ecx, eax
movzx eax, byte [edi]
imul eax, ecx
add eax, esi
mov ecx, 0xff
cdq
idiv ecx
mov byte [edi], al
mov ecx, dword [esp + 0x10]
jmp 0x5251d0
cmp byte [edi + 3], 0xc0
movzx esi, byte [edi + 3]
movzx eax, dl
movzx edx, byte [ebp + 2]
mov dword [esp + 0x80], eax
mov dword [esp + 0x88], esi
jb 0x524ff6
mov dword [esp + 0x1c], eax
mov ecx, 0xff
imul eax, edx
xor edx, edx
div ecx
mov ecx, dword [esp + 0x10]
mov edx, eax
mov dword [esp + 0x84], edx
test edx, edx
jne 0x524e3d
movzx eax, byte [edi + 2]
jmp 0x524e95
movzx eax, cl
mov dword [esp + 0x4c], eax
test esi, esi
je 0x524e95
movzx eax, byte [edi + 2]
mov esi, 0xff
mov ecx, dword [esp + 0x4c]
sub esi, edx
imul ecx, dword [esp + 0x84]
imul eax, esi
imul esi, dword [esp + 0x88]
imul ecx, ecx, 0xff
imul eax, dword [esp + 0x88]
add eax, ecx
imul ecx, dword [esp + 0x84], 0xff
cdq
add esi, ecx
mov ecx, dword [esp + 0x10]
idiv esi
mov esi, dword [esp + 0x88]
mov byte [edi + 2], al
xor edx, edx
movzx eax, byte [ebp + 1]
imul eax, dword [esp + 0x80]
div dword [esp + 0x18]
mov edx, eax
mov dword [esp + 0x84], edx
test edx, edx
jne 0x524ebd
movzx ecx, byte [edi + 1]
jmp 0x524f09
mov eax, ecx
sar eax, 8
movzx ecx, al
test esi, esi
je 0x524f09
imul ecx, dword [esp + 0x84]
mov esi, 0xff
movzx eax, byte [edi + 1]
sub esi, edx
imul eax, esi
imul esi, dword [esp + 0x88]
imul ecx, ecx, 0xff
imul eax, dword [esp + 0x88]
add eax, ecx
imul ecx, dword [esp + 0x84], 0xff
cdq
add esi, ecx
idiv esi
mov ecx, eax
mov byte [edi + 1], cl
xor edx, edx
movzx eax, byte [ebp]
mov esi, 0xff
imul eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x10]
div esi
mov dword [esp + 0x80], eax
test eax, eax
jne 0x524f35
movzx eax, byte [edi]
jmp 0x524f92
mov edx, dword [esp + 0x88]
mov eax, ecx
sar eax, 0x10
movzx eax, al
mov dword [esp + 0x84], eax
test edx, edx
je 0x524f92
sub esi, dword [esp + 0x80]
movzx eax, byte [edi]
mov ecx, dword [esp + 0x84]
imul ecx, dword [esp + 0x80]
imul eax, esi
imul esi, edx
imul ecx, ecx, 0xff
imul eax, edx
add eax, ecx
imul ecx, dword [esp + 0x80], 0xff
cdq
add esi, ecx
mov ecx, dword [esp + 0x10]
idiv esi
mov esi, 0xff
mov byte [edi], al
mov eax, dword [esp + 0x24]
test al, 0x10
je 0x5251ce
movzx eax, byte [ebp + 1]
movzx ecx, byte [ebp + 2]
add ecx, eax
movzx eax, byte [ebp]
add ecx, eax
mov dword [esp + 0x80], ecx
fild dword [esp + 0x80]
fstp dword [esp + 0x80]
fdivr dword [esp + 0x80]
fild dword [esp + 0x1c]
fstp qword [esp + 0x4c]
fmul qword [esp + 0x4c]
call fcn.004e3060
mov edx, esi
sub edx, eax
imul eax, eax, 0xff
imul edx, dword [esp + 0x88]
add eax, edx
jmp 0x524d3c
movzx eax, byte [ebp + 1]
movzx ecx, byte [ebp]
add eax, edx
add ecx, eax
mov dword [esp + 0x84], ecx
fild dword [esp + 0x84]
fstp dword [esp + 0x84]
fld dword [esp + 0x84]
fild dword [esp + 0x80]
fstp dword [esp + 0x80]
fmul dword [esp + 0x80]
fdivrp st(1)
call fcn.004e3060
mov ecx, eax
mov dword [esp + 0x80], ecx
test ecx, ecx
jne 0x52504d
movzx eax, byte [edi + 2]
jmp 0x5250a1
mov eax, dword [esp + 0x10]
movzx edx, al
mov dword [esp + 0x84], edx
mov edx, dword [esp + 0x88]
test edx, edx
je 0x5250af
movzx eax, byte [edi + 2]
mov esi, 0xff
sub esi, ecx
imul ecx, dword [esp + 0x84]
imul eax, esi
imul esi, edx
imul ecx, ecx, 0xff
imul eax, edx
add eax, ecx
imul ecx, dword [esp + 0x80], 0xff
cdq
add esi, ecx
mov ecx, dword [esp + 0x80]
idiv esi
mov edx, dword [esp + 0x88]
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x84]
mov byte [edi + 2], al
mov eax, dword [esp + 0x10]
test ecx, ecx
jne 0x5250c7
movzx eax, byte [edi + 1]
jmp 0x525121
sar eax, 8
movzx eax, al
mov dword [esp + 0x84], eax
test edx, edx
je 0x525121
movzx eax, byte [edi + 1]
mov esi, 0xff
sub esi, ecx
imul eax, esi
imul esi, dword [esp + 0x88]
imul eax, edx
mov edx, dword [esp + 0x84]
imul edx, ecx
imul ecx, edx, 0xff
mov dword [esp + 0x84], edx
add eax, ecx
imul ecx, dword [esp + 0x80], 0xff
cdq
add esi, ecx
mov ecx, dword [esp + 0x80]
idiv esi
mov edx, dword [esp + 0x88]
test ecx, ecx
mov ecx, dword [esp + 0x10]
mov byte [edi + 1], al
jne 0x525138
movzx eax, byte [edi]
jmp 0x5251a1
mov eax, ecx
sar eax, 0x10
movzx eax, al
mov dword [esp + 0x84], eax
test edx, edx
je 0x5251a1
movzx eax, byte [edi]
mov esi, 0xff
sub esi, dword [esp + 0x80]
imul eax, esi
imul esi, dword [esp + 0x88]
imul eax, edx
mov edx, dword [esp + 0x84]
imul edx, dword [esp + 0x80]
imul ecx, edx, 0xff
mov dword [esp + 0x84], edx
add eax, ecx
imul ecx, dword [esp + 0x80], 0xff
cdq
add esi, ecx
mov ecx, dword [esp + 0x10]
idiv esi
mov edx, dword [esp + 0x88]
mov byte [edi], al
mov eax, dword [esp + 0x24]
test al, 0x10
je 0x5251d0
mov esi, 0xff
mov eax, esi
sub eax, dword [esp + 0x80]
imul eax, edx
imul ecx, dword [esp + 0x80], 0xff
jmp 0x524d3a
fstp st(1)
fstp st(0)
mov eax, dword [esp + 0x20]
add ebp, 3
mov esi, dword [ebx + 0xd4]
add edi, esi
fld qword [esp + 0x58]
inc eax
fld dword [esp + 0x38]
fld qword [esp + 0x60]
mov dword [esp + 0x20], eax
cmp eax, dword [esp + 0x28]
jl 0x52412b
mov edx, dword [esp + 0x3c]
fstp st(1)
fstp st(1)
fstp st(0)
fld qword [esp + 0x58]
fld dword [esp + 0x38]
fld qword [esp + 0x60]
mov edi, dword [esp + 0x7c]
inc edx
mov ebp, dword [esp + 0x54]
mov dword [esp + 0x3c], edx
cmp edx, dword [esp + 0x2c]
jl 0x5240d5
fstp st(1)
fstp st(1)
fstp st(0)
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x58
ret 0x20