Function at 0x4d8581
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 0x4d85dc
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 0x4d85fb
mov eax, edx
sub eax, edi
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x28]
test eax, eax
jle 0x4d97dc
add eax, ebp
js 0x4d97dc
mov eax, dword [esp + 0x2c]
add eax, edi
js 0x4d97dc
cmp ebp, esi
jge 0x4d97dc
cmp edi, edx
jge 0x4d97dc
test ebp, ebp
jns 0x4d8635
mov eax, ebp
neg eax
jmp 0x4d8637
xor eax, eax
mov dword [esp + 0x40], eax
test edi, edi
jns 0x4d8645
mov edx, edi
neg edx
jmp 0x4d8647
xor edx, edx
mov dword [esp + 0x3c], edx
cmp edx, dword [esp + 0x2c]
jge 0x4d97dc
fld qword [0x4ffb80]
add ebp, eax
fst qword [esp + 0x58]
fld dword [0x4ffb78]
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 0x4d869f
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 0x4d97bf
mov eax, dword [esp + 0x78]
add eax, dword [esp + 0x20]
cmp dword [ebx + 0xe0], 0
je 0x4d8717
push dword [esp + 0x30]
fstp st(1)
push eax
fstp st(1)
push ebx
fstp st(0)
call fcn.004d337c
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 0x4d8858
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.004baae0
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 0x4d8817
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 0x4d884b
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 0x4d9399
mov eax, dword [esp + 0x24]
test al, 2
je 0x4d88eb
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 0x4d88c1
xor byte [edi + 2], cl
mov eax, ecx
sar eax, 8
xor byte [edi + 1], al
mov eax, ecx
sar eax, 0x10
jmp 0x4d88e4
cmp byte [esp + 0x6c], 0
je 0x4d977f
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 0x4d977f
test dword [ebx + 0xd8], 0x100
fstp st(1)
je 0x4d8c55
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 0x4d8c34
mov esi, dword [ebx + 0x110]
movzx eax, byte [ebp + 2]
mov dword [esp + 0x80], esi
mov dword [esp + 0x88], eax
cmp esi, 0xc0
jl 0x4d8add
mov eax, edx
xor edx, edx
imul eax, dword [esp + 0x88]
div dword [esp + 0x18]
mov dword [esp + 0x88], eax
test eax, eax
jne 0x4d8968
mov eax, dword [ebx + 0x104]
jmp 0x4d89a2
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 0x4d89cc
mov ecx, dword [ebx + 0x108]
jmp 0x4d8a1b
mov eax, ecx
sar eax, 8
cmp dword [ebx + 0x110], 0
movzx ecx, al
je 0x4d8a1b
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 0x4d8a3c
mov ecx, dword [ebx + 0x10c]
jmp 0x4d8a7e
mov eax, dword [esp + 0x10]
sar eax, 0x10
cmp dword [ebx + 0x110], 0
movzx ecx, al
je 0x4d8a7e
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.004baae0
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 0x4d8c2c
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.004baae0
mov esi, eax
mov eax, dword [esp + 0x10]
test esi, esi
jne 0x4d8b2d
mov ecx, dword [ebx + 0x104]
jmp 0x4d8b6e
cmp dword [esp + 0x80], 0
movzx ecx, al
je 0x4d8b6e
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 0x4d8b7d
mov ecx, dword [ebx + 0x108]
jmp 0x4d8bbb
sar eax, 8
cmp dword [ebx + 0x110], 0
movzx ecx, al
je 0x4d8bbb
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 0x4d8bca
mov ecx, dword [ebx + 0x10c]
jmp 0x4d8c0c
mov eax, dword [esp + 0x10]
sar eax, 0x10
cmp dword [ebx + 0x110], 0
movzx ecx, al
je 0x4d8c0c
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 0x4d8c48
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 0x4d977f
test al, 8
je 0x4d8d0d
cmp dword [esp + 0x34], 4
jne 0x4d977b
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 0x4d8ce5
fild dword [ebx + 0x110]
fstp qword [esp + 0x4c]
fld qword [esp + 0x4c]
jmp 0x4d8cff
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.004bab70
jmp 0x4d92ee
fstp st(0)
test al, 0x30
jne 0x4d8def
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 0x4d8da1
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 0x4d938d
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 0x4d938d
mov edx, ecx
sar edx, 0x18
cmp byte [esp + 0x6c], 0
je 0x4d92f6
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 0x4d8fc6
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 0x4d8e4b
mov eax, dword [ebx + 0x104]
jmp 0x4d8e85
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 0x4d8ebc
mov ecx, dword [ebx + 0x108]
mov dword [esp + 0x84], ecx
jmp 0x4d8efe
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 0x4d8f2c
mov eax, dword [ebx + 0x10c]
jmp 0x4d8f64
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.004baae0
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 0x4d9161
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.004baae0
mov ecx, eax
mov dword [esp + 0x88], ecx
test ecx, ecx
jne 0x4d9041
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 0x4d913d
mov eax, dword [esp + 0x10]
movzx edx, al
mov dword [esp + 0x80], edx
test esi, esi
je 0x4d9098
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 0x4d90e3
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 0x4d90fe
mov ecx, dword [esp + 0x88]
jmp 0x4d9141
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 0x4d91bd
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 0x4d9394
movzx ecx, byte [edi + 3]
mov dword [esp + 0x88], ecx
test edx, edx
jne 0x4d91d2
movzx eax, byte [edi + 2]
jmp 0x4d921b
test ecx, ecx
jne 0x4d91df
mov eax, dword [esp + 0x80]
jmp 0x4d921b
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 0x4d9228
movzx eax, byte [edi + 1]
jmp 0x4d926f
test ecx, ecx
jne 0x4d9235
mov eax, dword [esp + 0x84]
jmp 0x4d926f
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 0x4d9282
movzx eax, byte [edi]
jmp 0x4d92c9
test ecx, ecx
jne 0x4d928c
mov eax, dword [esp + 0x14]
jmp 0x4d92c9
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 0x4d9399
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 0x4d9399
cmp dword [esp + 0x34], 3
jne 0x4d93a2
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 0x4d977f
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 0x4d95a5
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 0x4d93ec
movzx eax, byte [edi + 2]
jmp 0x4d9444
movzx eax, cl
mov dword [esp + 0x4c], eax
test esi, esi
je 0x4d9444
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 0x4d946c
movzx ecx, byte [edi + 1]
jmp 0x4d94b8
mov eax, ecx
sar eax, 8
movzx ecx, al
test esi, esi
je 0x4d94b8
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 0x4d94e4
movzx eax, byte [edi]
jmp 0x4d9541
mov edx, dword [esp + 0x88]
mov eax, ecx
sar eax, 0x10
movzx eax, al
mov dword [esp + 0x84], eax
test edx, edx
je 0x4d9541
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 0x4d977d
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.004baae0
mov edx, esi
sub edx, eax
imul eax, eax, 0xff
imul edx, dword [esp + 0x88]
add eax, edx
jmp 0x4d92eb
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.004baae0
mov ecx, eax
mov dword [esp + 0x80], ecx
test ecx, ecx
jne 0x4d95fc
movzx eax, byte [edi + 2]
jmp 0x4d9650
mov eax, dword [esp + 0x10]
movzx edx, al
mov dword [esp + 0x84], edx
mov edx, dword [esp + 0x88]
test edx, edx
je 0x4d965e
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 0x4d9676
movzx eax, byte [edi + 1]
jmp 0x4d96d0
sar eax, 8
movzx eax, al
mov dword [esp + 0x84], eax
test edx, edx
je 0x4d96d0
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 0x4d96e7
movzx eax, byte [edi]
jmp 0x4d9750
mov eax, ecx
sar eax, 0x10
movzx eax, al
mov dword [esp + 0x84], eax
test edx, edx
je 0x4d9750
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 0x4d977f
mov esi, 0xff
mov eax, esi
sub eax, dword [esp + 0x80]
imul eax, edx
imul ecx, dword [esp + 0x80], 0xff
jmp 0x4d92e9
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 0x4d86da
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 0x4d8684
fstp st(1)
fstp st(1)
fstp st(0)
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x58
ret 0x20