Function at 0x523c52
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 0x523cad
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 0x523ccc
mov eax, edx
sub eax, edi
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x28]
test eax, eax
jle 0x524ead
add eax, ebp
js 0x524ead
mov eax, dword [esp + 0x2c]
add eax, edi
js 0x524ead
cmp ebp, esi
jge 0x524ead
cmp edi, edx
jge 0x524ead
test ebp, ebp
jns 0x523d06
mov eax, ebp
neg eax
jmp 0x523d08
xor eax, eax
mov dword [esp + 0x40], eax
test edi, edi
jns 0x523d16
mov edx, edi
neg edx
jmp 0x523d18
xor edx, edx
mov dword [esp + 0x3c], edx
cmp edx, dword [esp + 0x2c]
jge 0x524ead
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 0x523d70
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 0x524e90
mov eax, dword [esp + 0x78]
add eax, dword [esp + 0x20]
cmp dword [ebx + 0xe0], 0
je 0x523de8
push dword [esp + 0x30]
fstp st(1)
push eax
fstp st(1)
push ebx
fstp st(0)
call fcn.0051e32c
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 0x523f29
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.004e2ce0
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 0x523ee8
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 0x523f1c
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 0x524a6a
mov eax, dword [esp + 0x24]
test al, 2
je 0x523fbc
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 0x523f92
xor byte [edi + 2], cl
mov eax, ecx
sar eax, 8
xor byte [edi + 1], al
mov eax, ecx
sar eax, 0x10
jmp 0x523fb5
cmp byte [esp + 0x6c], 0
je 0x524e50
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 0x524e50
test dword [ebx + 0xd8], 0x100
fstp st(1)
je 0x524326
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 0x524305
mov esi, dword [ebx + 0x110]
movzx eax, byte [ebp + 2]
mov dword [esp + 0x80], esi
mov dword [esp + 0x88], eax
cmp esi, 0xc0
jl 0x5241ae
mov eax, edx
xor edx, edx
imul eax, dword [esp + 0x88]
div dword [esp + 0x18]
mov dword [esp + 0x88], eax
test eax, eax
jne 0x524039
mov eax, dword [ebx + 0x104]
jmp 0x524073
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 0x52409d
mov ecx, dword [ebx + 0x108]
jmp 0x5240ec
mov eax, ecx
sar eax, 8
cmp dword [ebx + 0x110], 0
movzx ecx, al
je 0x5240ec
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 0x52410d
mov ecx, dword [ebx + 0x10c]
jmp 0x52414f
mov eax, dword [esp + 0x10]
sar eax, 0x10
cmp dword [ebx + 0x110], 0
movzx ecx, al
je 0x52414f
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.004e2ce0
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 0x5242fd
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.004e2ce0
mov esi, eax
mov eax, dword [esp + 0x10]
test esi, esi
jne 0x5241fe
mov ecx, dword [ebx + 0x104]
jmp 0x52423f
cmp dword [esp + 0x80], 0
movzx ecx, al
je 0x52423f
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 0x52424e
mov ecx, dword [ebx + 0x108]
jmp 0x52428c
sar eax, 8
cmp dword [ebx + 0x110], 0
movzx ecx, al
je 0x52428c
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 0x52429b
mov ecx, dword [ebx + 0x10c]
jmp 0x5242dd
mov eax, dword [esp + 0x10]
sar eax, 0x10
cmp dword [ebx + 0x110], 0
movzx ecx, al
je 0x5242dd
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 0x524319
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 0x524e50
test al, 8
je 0x5243de
cmp dword [esp + 0x34], 4
jne 0x524e4c
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 0x5243b6
fild dword [ebx + 0x110]
fstp qword [esp + 0x4c]
fld qword [esp + 0x4c]
jmp 0x5243d0
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.004e2d70
jmp 0x5249bf
fstp st(0)
test al, 0x30
jne 0x5244c0
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 0x524472
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 0x524a5e
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 0x524a5e
mov edx, ecx
sar edx, 0x18
cmp byte [esp + 0x6c], 0
je 0x5249c7
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 0x524697
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 0x52451c
mov eax, dword [ebx + 0x104]
jmp 0x524556
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 0x52458d
mov ecx, dword [ebx + 0x108]
mov dword [esp + 0x84], ecx
jmp 0x5245cf
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 0x5245fd
mov eax, dword [ebx + 0x10c]
jmp 0x524635
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.004e2ce0
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 0x524832
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.004e2ce0
mov ecx, eax
mov dword [esp + 0x88], ecx
test ecx, ecx
jne 0x524712
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 0x52480e
mov eax, dword [esp + 0x10]
movzx edx, al
mov dword [esp + 0x80], edx
test esi, esi
je 0x524769
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 0x5247b4
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 0x5247cf
mov ecx, dword [esp + 0x88]
jmp 0x524812
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 0x52488e
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 0x524a65
movzx ecx, byte [edi + 3]
mov dword [esp + 0x88], ecx
test edx, edx
jne 0x5248a3
movzx eax, byte [edi + 2]
jmp 0x5248ec
test ecx, ecx
jne 0x5248b0
mov eax, dword [esp + 0x80]
jmp 0x5248ec
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 0x5248f9
movzx eax, byte [edi + 1]
jmp 0x524940
test ecx, ecx
jne 0x524906
mov eax, dword [esp + 0x84]
jmp 0x524940
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 0x524953
movzx eax, byte [edi]
jmp 0x52499a
test ecx, ecx
jne 0x52495d
mov eax, dword [esp + 0x14]
jmp 0x52499a
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 0x524a6a
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 0x524a6a
cmp dword [esp + 0x34], 3
jne 0x524a73
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 0x524e50
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 0x524c76
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 0x524abd
movzx eax, byte [edi + 2]
jmp 0x524b15
movzx eax, cl
mov dword [esp + 0x4c], eax
test esi, esi
je 0x524b15
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 0x524b3d
movzx ecx, byte [edi + 1]
jmp 0x524b89
mov eax, ecx
sar eax, 8
movzx ecx, al
test esi, esi
je 0x524b89
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 0x524bb5
movzx eax, byte [edi]
jmp 0x524c12
mov edx, dword [esp + 0x88]
mov eax, ecx
sar eax, 0x10
movzx eax, al
mov dword [esp + 0x84], eax
test edx, edx
je 0x524c12
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 0x524e4e
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.004e2ce0
mov edx, esi
sub edx, eax
imul eax, eax, 0xff
imul edx, dword [esp + 0x88]
add eax, edx
jmp 0x5249bc
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.004e2ce0
mov ecx, eax
mov dword [esp + 0x80], ecx
test ecx, ecx
jne 0x524ccd
movzx eax, byte [edi + 2]
jmp 0x524d21
mov eax, dword [esp + 0x10]
movzx edx, al
mov dword [esp + 0x84], edx
mov edx, dword [esp + 0x88]
test edx, edx
je 0x524d2f
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 0x524d47
movzx eax, byte [edi + 1]
jmp 0x524da1
sar eax, 8
movzx eax, al
mov dword [esp + 0x84], eax
test edx, edx
je 0x524da1
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 0x524db8
movzx eax, byte [edi]
jmp 0x524e21
mov eax, ecx
sar eax, 0x10
movzx eax, al
mov dword [esp + 0x84], eax
test edx, edx
je 0x524e21
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 0x524e50
mov esi, 0xff
mov eax, esi
sub eax, dword [esp + 0x80]
imul eax, edx
imul ecx, dword [esp + 0x80], 0xff
jmp 0x5249ba
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 0x523dab
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 0x523d55
fstp st(1)
fstp st(1)
fstp st(0)
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x58
ret 0x20