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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x84
push ebx
push esi
push edi
mov edi, ecx
mov dword [esp + 0x1c], edi
mov eax, dword [edi + 4]
mov ecx, dword [edi + 0x90]
mov esi, dword [edi + 0xc]
mov edx, dword [edi + 0x10]
mov ebx, dword [edi + 0x14]
mov dword [esp + 0x68], eax
mov eax, dword [edi + 8]
mov dword [esp + 0x64], eax
mov eax, dword [edi + 0x24]
imul ecx, eax
mov dword [esp + 0x4c], esi
mov dword [esp + 0x28], edx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x78], ecx
mov ecx, dword [edi + 0x94]
imul ecx, eax
mov dword [esp + 0x74], ecx
mov ecx, dword [edi + 0xa0]
imul ecx, eax
xor eax, eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x7c], ecx
cmp dword [edi + 0x1c], eax
jle 0x592d9a
movsd xmm0, qword [0x669e58]
movsd qword [esp + 0x80], xmm0
movsd xmm0, qword [0x662238]
mov dword [esp + 0x70], 0xff
movsd qword [esp + 0x88], xmm0
nop dword [eax + eax]
mov eax, dword [esp + 0x1c]
xor ecx, ecx
xor edi, edi
mov dword [esp + 0x60], ecx
mov dword [esp + 0x50], edi
cmp dword [eax + 0x18], ecx
jle 0x592d3e
nop dword [eax]
push dword [eax + 0x94]
push ecx
push dword [esp + 0x6c]
mov ecx, eax
call fcn.005876b0
mov dword [esp + 0x40], eax
test eax, eax
je 0x595205
mov eax, 0xff
test ebx, ebx
je 0x592aa5
mov eax, dword [esp + 0x1c]
mov ecx, eax
push dword [eax + 0xa0]
push dword [esp + 0x64]
push ebx
call fcn.005876b0
test eax, eax
je 0x595205
mov ecx, dword [esp + 0x1c]
mov edx, dword [ecx + 0x30]
mov ebx, edx
imul ebx, dword [esp + 0x40]
shr ebx, 8
cmp dword [ecx + 0x74], 0
mov dword [esp + 0x3c], ebx
je 0x592b08
cmp dword [ecx + 0x78], eax
ja 0x592b04
cmp dword [ecx + 0x54], 2
jne 0x592b21
cmp dword [ecx + 0x70], 0
mov eax, dword [ecx + 0x68]
je 0x592aec
imul edx, ebx
shr edx, 8
cmp edx, eax
sbb ebx, ebx
and ebx, 0xffffff01
add ebx, 0xff
jmp 0x592b1d
cmp ebx, eax
sbb ebx, ebx
and ebx, 0xffffff01
add ebx, 0xff
imul ebx, edx
shr ebx, 8
jmp 0x592b1d
xor ebx, ebx
jmp 0x592b1d
imul eax, ebx
mov dword [esp + 0x40], eax
mov eax, 0x80808081
mul dword [esp + 0x40]
mov ebx, edx
shr ebx, 7
mov dword [esp + 0x3c], ebx
cmp dword [ecx + 0x6c], 0
je 0x592b3c
cmp ebx, dword [ecx + 0x68]
sbb ebx, ebx
and ebx, 0xffffff01
add ebx, 0xff
mov dword [esp + 0x3c], ebx
lea eax, [esp + 0x34]
push eax
lea eax, [esp + 0x30]
push eax
lea eax, [esp + 0x28]
push eax
mov eax, dword [ecx + 0xa4]
imul eax, dword [esp + 0x6c]
push eax
push dword [esp + 0x78]
call fcn.00589e80
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx + 0x2c]
dec eax
cmp eax, 0x14
ja case.0x592b71.6
jmp dword [eax*4 + 0x59521c]
mov edx, dword [esp + 0x28]
mov al, byte [edi + edx]
test al, al
je 0x592e45
mov ecx, dword [ecx + 0x34]
mov dword [esp + 0x40], ecx
movzx eax, al
test ecx, ecx
jne 0x592b9a
mov eax, 0xff
mov dword [esp + 0x10], eax
cmp ebx, 0xff
jae 0x592da1
mov ecx, 0xff
sub ecx, eax
mov eax, 0x80808081
imul ecx, ebx
add ecx, 0x7f
mul ecx
shr edx, 7
add edx, dword [esp + 0x10]
cmp dword [esp + 0x40], 0
je 0x592bd3
mov eax, dword [esp + 0x28]
mov byte [edi + eax], dl
mov ebx, dword [esp + 0x20]
imul eax, edx, 0xfe01
push 0
push dword [esp + 0x14]
cdq
mov ecx, eax
mov eax, edx
mov edx, dword [esp + 0x58]
mov esi, ecx
mov dword [esp + 0x20], ecx
mov edi, eax
mov dword [esp + 0x14], eax
lea ecx, [ebx - 0xff]
imul ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x54]
shrd esi, edi, 1
sar edi, 1
movzx eax, byte [eax + edx*4 + 2]
add ecx, 0xfe01
imul ecx, eax
imul eax, ebx, 0xfe01
sub eax, ecx
cdq
push edx
push eax
call fcn.005a4ee0
push dword [esp + 0xc]
add eax, esi
push dword [esp + 0x1c]
adc edx, edi
push edx
push eax
call fcn.005a4e30
mov edx, dword [esp + 0x4c]
sub ebx, eax
mov ecx, 0xff
movzx eax, bl
cmp ebx, ecx
mov ebx, dword [esp + 0x2c]
push 0
cmovl ecx, eax
mov eax, dword [esp + 0x54]
push dword [esp + 0x14]
mov byte [edx + eax*4 + 2], cl
lea ecx, [ebx - 0xff]
imul ecx, dword [esp + 0x44]
movzx eax, byte [edx + eax*4 + 1]
add ecx, 0xfe01
imul ecx, eax
imul eax, ebx, 0xfe01
sub eax, ecx
cdq
push edx
push eax
call fcn.005a4ee0
push dword [esp + 0xc]
add eax, esi
push dword [esp + 0x1c]
adc edx, edi
push edx
push eax
call fcn.005a4e30
mov edx, dword [esp + 0x4c]
sub ebx, eax
mov ecx, 0xff
movzx eax, bl
cmp ebx, ecx
mov ebx, dword [esp + 0x34]
push 0
cmovl ecx, eax
mov eax, dword [esp + 0x54]
push dword [esp + 0x14]
mov byte [edx + eax*4 + 1], cl
lea ecx, [ebx - 0xff]
imul ecx, dword [esp + 0x44]
movzx eax, byte [edx + eax*4]
add ecx, 0xfe01
imul ecx, eax
imul eax, ebx, 0xfe01
sub eax, ecx
cdq
push edx
push eax
call fcn.005a4ee0
push dword [esp + 0xc]
add eax, esi
push dword [esp + 0x1c]
adc edx, edi
push edx
push eax
call fcn.005a4e30
mov edi, dword [esp + 0x50]
sub ebx, eax
mov esi, dword [esp + 0x4c]
mov ecx, 0xff
cmp ebx, ecx
movzx eax, bl
cmovl ecx, eax
mov byte [esi + edi*4], cl
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x28]
mov ebx, dword [esp + 0x30]
mov ecx, dword [esp + 0x60]
inc edi
add ecx, dword [eax + 0x24]
mov dword [esp + 0x50], edi
mov dword [esp + 0x60], ecx
cmp ecx, dword [eax + 0x18]
jl 0x592a60
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x74]
add dword [esp + 0x64], eax
mov eax, dword [esp + 0x6c]
add eax, dword [edi + 0x24]
mov ecx, dword [esp + 0x68]
add esi, dword [edi + 0x98]
add edx, dword [edi + 0x9c]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x78]
add eax, ecx
mov dword [esp + 0x4c], esi
test ecx, ecx
mov dword [esp + 0x28], edx
cmove eax, ecx
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x7c]
add eax, ebx
test ebx, ebx
cmove eax, ebx
mov ebx, eax
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x6c]
cmp eax, dword [edi + 0x1c]
jl 0x592a40
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
movzx ecx, byte [esi + edi*4 + 2]
sub ecx, 0xff
imul ecx, eax
mov eax, 0x81018203
add ecx, 0xfe01
imul ecx, dword [esp + 0x20]
add ecx, 0x7f00
mul ecx
movzx ecx, byte [esi + edi*4 + 1]
mov eax, 0x81018203
sub ecx, 0xff
shr edx, 0xf
imul ecx, dword [esp + 0x10]
mov byte [esi + edi*4 + 2], dl
add ecx, 0xfe01
imul ecx, dword [esp + 0x2c]
add ecx, 0x7f00
mul ecx
movzx ecx, byte [esi + edi*4]
mov eax, 0x81018203
sub ecx, 0xff
shr edx, 0xf
imul ecx, dword [esp + 0x10]
mov byte [esi + edi*4 + 1], dl
add ecx, 0xfe01
imul ecx, dword [esp + 0x34]
add ecx, 0x7f00
mul ecx
mov eax, dword [esp + 0x1c]
shr edx, 0xf
mov byte [esi + edi*4], dl
cmp dword [eax + 0x34], 0
je 0x592d1d
mov edx, dword [esp + 0x28]
mov byte [edi + edx], 0xff
jmp 0x592d21
cmp dword [ecx + 0x34], 0
je 0x592e68
movzx eax, byte [esp + 0x20]
mov byte [esi + edi*4 + 2], al
movzx eax, byte [esp + 0x2c]
mov byte [esi + edi*4 + 1], al
movzx eax, byte [esp + 0x34]
mov byte [esi + edi*4], al
mov byte [edi + edx], bl
mov eax, ecx
jmp 0x592d21
mov edx, dword [esp + 0x28]
movzx eax, byte [edi + edx]
mov dword [esp + 0x40], eax
cmp eax, 0xff
jae 0x592ff9
cmp dword [ecx + 0x34], 0
je 0x592ff9
test eax, eax
je 0x592fd1
mov ecx, 0xff
sub ecx, ebx
imul ecx, eax
imul eax, ebx, 0xff
shl ebx, 0xf
add eax, 0x7f
add ecx, eax
mov eax, 0x80808081
mul ecx
mov eax, ebx
movzx ebx, byte [esi + edi*4 + 2]
mov ecx, edx
xor edx, edx
shr ecx, 7
div ecx
mov dword [esp + 0x38], ecx
mov edx, eax
mov eax, 0x8000
sub eax, edx
mov dword [esp + 0x18], edx
mov dword [esp + 0xc], eax
cmp dword [esp + 0x20], ebx
jbe 0x592efa
imul eax, ebx
mov ebx, edx
imul ebx, dword [esp + 0x20]
add eax, 0x4000
add ebx, eax
mov eax, dword [esp + 0xc]
shr ebx, 0xf
movzx edx, byte [esi + edi*4 + 1]
mov dword [esp + 0x10], edx
cmp dword [esp + 0x2c], edx
jbe 0x592f26
mov ecx, eax
imul ecx, edx
mov edx, dword [esp + 0x18]
imul edx, dword [esp + 0x2c]
add edx, 0x4000
add edx, ecx
shr edx, 0xf
mov dword [esp + 0x10], edx
movzx eax, byte [esi + edi*4]
mov edx, dword [esp + 0x34]
mov dword [esp + 0x24], eax
cmp edx, eax
jbe 0x592f52
mov ecx, dword [esp + 0xc]
imul ecx, eax
mov eax, dword [esp + 0x18]
imul eax, edx
add eax, 0x4000
add eax, ecx
shr eax, 0xf
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x40]
xor edx, edx
shl eax, 0xf
mov esi, 0x8000
div dword [esp + 0x38]
mov edx, eax
sub esi, edx
imul ebx, edx
mov ecx, esi
mov eax, esi
imul ecx, dword [esp + 0x20]
imul eax, dword [esp + 0x2c]
imul esi, dword [esp + 0x34]
add ecx, 0x4000
add ecx, ebx
mov ebx, dword [esp + 0x4c]
shr ecx, 0xf
mov byte [ebx + edi*4 + 2], cl
mov ecx, dword [esp + 0x10]
imul ecx, edx
add ecx, 0x4000
add eax, ecx
shr eax, 0xf
mov byte [ebx + edi*4 + 1], al
mov eax, dword [esp + 0x24]
imul eax, edx
mov edx, dword [esp + 0x28]
add eax, 0x4000
add eax, esi
mov esi, ebx
shr eax, 0xf
mov byte [esi + edi*4], al
mov eax, dword [esp + 0x38]
mov byte [edi + edx], al
mov eax, dword [esp + 0x1c]
jmp 0x592d21
movzx eax, byte [esp + 0x20]
mov byte [esi + edi*4 + 2], al
movzx eax, byte [esp + 0x2c]
mov byte [esi + edi*4 + 1], al
movzx eax, byte [esp + 0x34]
mov byte [esi + edi*4], al
mov eax, ebx
mov byte [edi + edx], al
mov eax, dword [esp + 0x1c]
jmp 0x592d21
test eax, eax
je 0x592e68
movzx eax, byte [esi + edi*4 + 2]
cmp ebx, 0xff
jae 0x5930a6
imul ebx, ebx, 0x101
mov ecx, 0x8000
inc ebx
shr ebx, 1
sub ecx, ebx
mov dword [esp + 0xc], ecx
cmp dword [esp + 0x20], eax
jbe 0x593051
imul eax, ecx
mov dword [esp + 0x40], eax
mov eax, ebx
imul eax, dword [esp + 0x20]
mov edx, dword [esp + 0x40]
add edx, 0x4000
add eax, edx
mov edx, dword [esp + 0x28]
shr eax, 0xf
mov byte [esi + edi*4 + 2], al
movzx eax, byte [esi + edi*4 + 1]
cmp dword [esp + 0x2c], eax
jbe 0x593079
imul ecx, eax
mov eax, ebx
imul eax, dword [esp + 0x2c]
add ecx, 0x4000
add eax, ecx
mov ecx, dword [esp + 0xc]
shr eax, 0xf
mov byte [esi + edi*4 + 1], al
movzx eax, byte [esi + edi*4]
cmp dword [esp + 0x34], eax
jbe 0x592ff0
imul ebx, dword [esp + 0x34]
imul ecx, eax
lea eax, [ebx + 0x4000]
add eax, ecx
shr eax, 0xf
mov byte [esi + edi*4], al
mov eax, dword [esp + 0x1c]
jmp 0x592d21
mov ecx, dword [esp + 0x20]
cmp ecx, eax
jbe 0x5930b2
mov byte [esi + edi*4 + 2], cl
movzx eax, byte [esi + edi*4 + 1]
mov ecx, dword [esp + 0x2c]
cmp ecx, eax
jbe 0x5930c3
mov byte [esi + edi*4 + 1], cl
movzx eax, byte [esi + edi*4]
mov ecx, dword [esp + 0x34]
cmp ecx, eax
mov ebx, dword [esp + 0x30]
mov eax, dword [esp + 0x1c]
jbe 0x592d25
mov byte [esi + edi*4], cl
jmp 0x592d25
mov edx, dword [esp + 0x28]
movzx eax, byte [edi + edx]
mov dword [esp + 0x40], eax
cmp eax, 0xff
jae 0x5931b3
cmp dword [ecx + 0x34], 0
je 0x5931b3
test eax, eax
je 0x592fd1
mov ecx, 0xff
sub ecx, ebx
imul ecx, eax
imul eax, ebx, 0xff
shl ebx, 0xf
add eax, 0x7f
add ecx, eax
mov eax, 0x80808081
mul ecx
mov eax, ebx
movzx ebx, byte [esi + edi*4 + 2]
mov ecx, edx
xor edx, edx
shr ecx, 7
div ecx
mov dword [esp + 0x38], ecx
mov edx, eax
mov eax, 0x8000
sub eax, edx
mov dword [esp + 0x18], edx
mov dword [esp + 0xc], eax
cmp dword [esp + 0x20], ebx
jae 0x59316e
imul eax, ebx
mov ebx, edx
imul ebx, dword [esp + 0x20]
add eax, 0x4000
add ebx, eax
mov eax, dword [esp + 0xc]
shr ebx, 0xf
movzx edx, byte [esi + edi*4 + 1]
mov dword [esp + 0x10], edx
cmp dword [esp + 0x2c], edx
jae 0x59319a
mov ecx, eax
imul ecx, edx
mov edx, dword [esp + 0x18]
imul edx, dword [esp + 0x2c]
add edx, 0x4000
add edx, ecx
shr edx, 0xf
mov dword [esp + 0x10], edx
movzx eax, byte [esi + edi*4]
mov edx, dword [esp + 0x34]
mov dword [esp + 0x24], eax
cmp edx, eax
jae 0x592f52
jmp 0x592f36
test eax, eax
je 0x592e68
movzx eax, byte [esi + edi*4 + 2]
mov dword [esp + 0x40], eax
cmp ebx, 0xff
jae 0x593242
imul ebx, ebx, 0x101
mov ecx, 0x8000
inc ebx
shr ebx, 1
sub ecx, ebx
mov dword [esp + 0xc], ecx
cmp dword [esp + 0x20], eax
jae 0x593207
mov edx, dword [esp + 0x40]
mov eax, ebx
imul eax, dword [esp + 0x20]
imul edx, ecx
add edx, 0x4000
add eax, edx
mov edx, dword [esp + 0x28]
shr eax, 0xf
mov byte [esi + edi*4 + 2], al
movzx eax, byte [esi + edi*4 + 1]
cmp dword [esp + 0x2c], eax
jae 0x59322f
imul ecx, eax
mov eax, ebx
imul eax, dword [esp + 0x2c]
add ecx, 0x4000
add eax, ecx
mov ecx, dword [esp + 0xc]
shr eax, 0xf
mov byte [esi + edi*4 + 1], al
movzx eax, byte [esi + edi*4]
cmp dword [esp + 0x34], eax
jae 0x592ff0
jmp 0x593087
mov ecx, dword [esp + 0x20]
cmp ecx, eax
jae 0x59324e
mov byte [esi + edi*4 + 2], cl
movzx eax, byte [esi + edi*4 + 1]
mov ecx, dword [esp + 0x2c]
cmp ecx, eax
jae 0x59325f
mov byte [esi + edi*4 + 1], cl
movzx eax, byte [esi + edi*4]
mov ecx, dword [esp + 0x34]
cmp ecx, eax
mov ebx, dword [esp + 0x30]
mov eax, dword [esp + 0x1c]
jae 0x592d25
mov byte [esi + edi*4], cl
jmp 0x592d25
mov edx, dword [esp + 0x28]
mov al, byte [edi + edx]
mov byte [esp + 0x17], al
test al, al
je 0x592e45
movzx eax, byte [esi + edi*4 + 2]
movzx edx, byte [esi + edi*4]
movzx ecx, byte [esi + edi*4 + 1]
mov esi, dword [esp + 0x4c]
mov dword [esp + 0x24], ecx
add ecx, dword [esp + 0x2c]
mov dword [esp + 0x38], edx
add edx, dword [esp + 0x34]
mov dword [esp + 0x10], eax
add eax, dword [esp + 0x20]
mov dword [esp + 0x3c], edx
cmp eax, 0xff
mov edx, 0xff
cmova eax, edx
cmp ecx, edx
mov dword [esp + 0x44], eax
cmova ecx, edx
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x3c]
cmp ecx, edx
cmova ecx, edx
cmp byte [esp + 0x17], dl
mov edx, dword [esp + 0x28]
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x1c]
jae 0x59341c
cmp dword [ecx + 0x34], 0
je 0x59341c
movzx eax, byte [esp + 0x17]
mov ecx, 0xff
sub ecx, ebx
mov dword [esp + 0x40], eax
imul ecx, eax
mov esi, 0x8000
imul eax, ebx, 0xff
shl ebx, 0xf
add eax, 0x7f
add ecx, eax
mov eax, 0x80808081
mul ecx
mov eax, ebx
mov ecx, edx
xor edx, edx
shr ecx, 7
div ecx
mov dword [esp + 0x18], ecx
mov edi, eax
sub esi, edi
mov ecx, edi
imul ecx, dword [esp + 0xc]
mov eax, esi
imul eax, dword [esp + 0x24]
mov ebx, esi
imul esi, dword [esp + 0x38]
mov edx, edi
imul edi, dword [esp + 0x3c]
imul edx, dword [esp + 0x44]
imul ebx, dword [esp + 0x10]
add ecx, 0x4000
add eax, ecx
shr eax, 0xf
mov dword [esp + 0xc], eax
add edx, 0x4000
lea eax, [esi + 0x4000]
add ebx, edx
add eax, edi
shr ebx, 0xf
shr eax, 0xf
xor edx, edx
mov dword [esp + 0x10], eax
mov esi, 0x8000
mov eax, dword [esp + 0x40]
shl eax, 0xf
div dword [esp + 0x18]
mov edi, eax
sub esi, edi
mov edx, edi
imul edx, ebx
mov ecx, edi
imul ecx, dword [esp + 0xc]
mov ebx, esi
imul edi, dword [esp + 0x10]
mov eax, esi
imul eax, dword [esp + 0x2c]
imul ebx, dword [esp + 0x20]
imul esi, dword [esp + 0x34]
add ecx, 0x4000
add ecx, eax
add ebx, 0x4000
shr ecx, 0xf
add ebx, edx
lea eax, [edi + 0x4000]
mov edi, dword [esp + 0x50]
add eax, esi
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x4c]
shr ebx, 0xf
shr eax, 0xf
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x18]
mov byte [edi + edx], al
mov eax, dword [esp + 0x3c]
mov byte [esi + edi*4], al
mov eax, dword [esp + 0x1c]
mov byte [esi + edi*4 + 2], bl
mov byte [esi + edi*4 + 1], cl
jmp 0x592d21
cmp ebx, 0xff
jae 0x59349d
imul esi, ebx, 0x101
mov edx, 0x8000
inc esi
shr esi, 1
sub edx, esi
mov ecx, esi
imul ecx, eax
mov ebx, edx
imul ebx, dword [esp + 0x10]
mov eax, edx
imul eax, dword [esp + 0x24]
imul edx, dword [esp + 0x38]
add ecx, 0x4000
add ebx, ecx
mov ecx, esi
imul ecx, dword [esp + 0xc]
imul esi, dword [esp + 0x3c]
shr ebx, 0xf
add ecx, 0x4000
add ecx, eax
add esi, 0x4000
add edx, esi
shr ecx, 0xf
mov esi, dword [esp + 0x4c]
shr edx, 0xf
mov dword [esp + 0x3c], edx
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x28]
mov byte [esi + edi*4], al
mov eax, dword [esp + 0x1c]
mov byte [esi + edi*4 + 2], bl
mov byte [esi + edi*4 + 1], cl
jmp 0x592d21
mov eax, dword [esp + 0x3c]
mov ebx, dword [esp + 0x44]
mov ecx, dword [esp + 0xc]
mov byte [esi + edi*4], al
mov eax, dword [esp + 0x1c]
mov byte [esi + edi*4 + 2], bl
mov byte [esi + edi*4 + 1], cl
jmp 0x592d21
mov edx, dword [esp + 0x28]
mov al, byte [edi + edx]
mov byte [esp + 0x17], al
test al, al
je 0x592e45
movzx ecx, byte [esi + edi*4 + 1]
movzx edx, byte [esi + edi*4]
movzx eax, byte [esi + edi*4 + 2]
mov dword [esp + 0x44], ecx
add ecx, dword [esp + 0x2c]
mov dword [esp + 0xc], ecx
mov ecx, edx
add ecx, dword [esp + 0x34]
mov dword [esp + 0x38], eax
add eax, dword [esp + 0x20]
cmp byte [esp + 0x17], 0xff
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x3c], eax
jae 0x593649
cmp dword [ecx + 0x34], 0
je 0x593649
movzx eax, byte [esp + 0x17]
mov ecx, 0xff
sub ecx, ebx
mov dword [esp + 0x40], eax
imul ecx, eax
mov esi, 0x8000
imul eax, ebx, 0xff
shl ebx, 0xf
add eax, 0x7f
add ecx, eax
mov eax, 0x80808081
mul ecx
mov eax, ebx
mov ecx, edx
xor edx, edx
shr ecx, 7
div ecx
mov dword [esp + 0x24], ecx
mov edi, eax
imul eax, dword [esp + 0xc]
sub esi, edi
mov ebx, edi
imul edi, dword [esp + 0x18]
mov ecx, esi
imul ecx, dword [esp + 0x44]
mov edx, esi
imul edx, dword [esp + 0x38]
imul ebx, dword [esp + 0x3c]
imul esi, dword [esp + 0x10]
add ecx, 0x4000
add eax, ecx
add edx, 0x4000
add ebx, edx
shr eax, 0xf
lea ecx, [edi + 0x4000]
shr ebx, 0xf
add ecx, esi
mov edx, 0xff
shr ecx, 0xf
mov esi, 0x8000
cmp ebx, 0xff
cmova ebx, edx
cmp eax, edx
cmova eax, edx
cmp ecx, edx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x40]
cmova ecx, edx
shl eax, 0xf
xor edx, edx
div dword [esp + 0x24]
mov dword [esp + 0x18], ecx
mov edi, eax
imul eax, dword [esp + 0xc]
sub esi, edi
mov ecx, edi
imul edi, dword [esp + 0x18]
mov edx, esi
imul edx, dword [esp + 0x20]
imul ecx, ebx
mov ebx, dword [esp + 0x4c]
add eax, 0x4000
add edx, 0x4000
add ecx, edx
mov edx, dword [esp + 0x50]
shr ecx, 0xf
mov byte [ebx + edx*4 + 2], cl
mov ecx, esi
imul ecx, dword [esp + 0x2c]
imul esi, dword [esp + 0x34]
add eax, ecx
shr eax, 0xf
mov byte [ebx + edx*4 + 1], al
lea eax, [edi + 0x4000]
add eax, esi
mov edi, edx
mov edx, dword [esp + 0x28]
mov esi, ebx
shr eax, 0xf
mov byte [esi + edi*4], al
mov eax, dword [esp + 0x24]
mov byte [edi + edx], al
mov eax, dword [esp + 0x1c]
jmp 0x592d21
cmp ebx, 0xff
jae 0x5936b7
imul esi, ebx, 0x101
mov edx, 0x8000
inc esi
shr esi, 1
sub edx, esi
mov ecx, esi
imul ecx, eax
mov ebx, edx
imul ebx, dword [esp + 0x38]
mov eax, edx
imul eax, dword [esp + 0x44]
imul edx, dword [esp + 0x10]
add ecx, 0x4000
add ebx, ecx
mov ecx, esi
imul ecx, dword [esp + 0xc]
add eax, 0x4000
imul esi, dword [esp + 0x18]
shr ebx, 0xf
add eax, ecx
shr eax, 0xf
mov dword [esp + 0xc], eax
lea eax, [edx + 0x4000]
mov edx, dword [esp + 0x28]
add eax, esi
mov esi, dword [esp + 0x4c]
shr eax, 0xf
mov dword [esp + 0x18], eax
jmp 0x5936bb
mov ebx, dword [esp + 0x3c]
mov ecx, 0xff
movzx eax, bl
cmp ebx, ecx
mov ebx, dword [esp + 0xc]
cmovb ecx, eax
movzx eax, bl
mov byte [esi + edi*4 + 2], cl
mov ecx, 0xff
cmp ebx, ecx
mov ebx, dword [esp + 0x18]
cmovb ecx, eax
movzx eax, bl
mov byte [esi + edi*4 + 1], cl
mov ecx, 0xff
cmp ebx, ecx
cmovb ecx, eax
mov eax, dword [esp + 0x1c]
mov byte [esi + edi*4], cl
jmp 0x592d21
mov edx, dword [esp + 0x28]
mov al, byte [edi + edx]
mov byte [esp + 0x17], al
test al, al
je 0x592e45
movzx ecx, byte [esi + edi*4 + 1]
movzx eax, byte [esi + edi*4 + 2]
mov edx, dword [esp + 0x20]
mov dword [esp + 0xc], ecx
movzx ecx, byte [esi + edi*4]
mov dword [esp + 0x18], ecx
xor ecx, ecx
mov dword [esp + 0x24], eax
sub eax, dword [esp + 0x20]
cmp dword [esp + 0x24], edx
mov edx, dword [esp + 0x2c]
cmova ecx, eax
mov eax, dword [esp + 0xc]
sub eax, edx
mov dword [esp + 0x38], ecx
xor ecx, ecx
cmp dword [esp + 0xc], edx
mov edx, dword [esp + 0x34]
cmova ecx, eax
mov eax, dword [esp + 0x18]
sub eax, edx
mov dword [esp + 0x44], ecx
xor ecx, ecx
cmp dword [esp + 0x18], edx
mov edx, dword [esp + 0x28]
cmova ecx, eax
mov al, byte [esp + 0x17]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x1c]
cmp al, 0xff
jae 0x59389e
cmp dword [ecx + 0x34], 0
je 0x59389e
movzx eax, al
mov ecx, 0xff
mov dword [esp + 0x40], eax
sub ecx, ebx
imul ecx, eax
mov esi, 0x8000
imul eax, ebx, 0xff
shl ebx, 0xf
add eax, 0x7f
add ecx, eax
mov eax, 0x80808081
mul ecx
mov eax, ebx
mov ecx, edx
xor edx, edx
shr ecx, 7
div ecx
mov dword [esp + 0x3c], ecx
mov edi, eax
sub esi, edi
mov ecx, edi
imul ecx, dword [esp + 0x44]
mov eax, esi
imul eax, dword [esp + 0xc]
mov ebx, esi
imul esi, dword [esp + 0x18]
mov edx, edi
imul edi, dword [esp + 0x10]
imul edx, dword [esp + 0x38]
imul ebx, dword [esp + 0x24]
add ecx, 0x4000
add eax, ecx
shr eax, 0xf
mov dword [esp + 0xc], eax
add edx, 0x4000
lea eax, [esi + 0x4000]
add ebx, edx
add eax, edi
shr ebx, 0xf
shr eax, 0xf
xor edx, edx
mov dword [esp + 0x18], eax
mov esi, 0x8000
mov eax, dword [esp + 0x40]
shl eax, 0xf
div dword [esp + 0x3c]
mov edi, eax
imul eax, dword [esp + 0xc]
sub esi, edi
imul ebx, edi
imul edi, dword [esp + 0x18]
mov edx, esi
imul edx, dword [esp + 0x20]
mov ecx, esi
imul ecx, dword [esp + 0x2c]
imul esi, dword [esp + 0x34]
add eax, 0x4000
add edx, 0x4000
add ecx, eax
add ebx, edx
mov edx, dword [esp + 0x28]
lea eax, [edi + 0x4000]
mov edi, dword [esp + 0x50]
add eax, esi
mov esi, dword [esp + 0x4c]
shr ebx, 0xf
shr ecx, 0xf
shr eax, 0xf
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x3c]
mov byte [edi + edx], al
mov eax, dword [esp + 0x10]
mov byte [esi + edi*4], al
mov eax, dword [esp + 0x1c]
mov byte [esi + edi*4 + 2], bl
mov byte [esi + edi*4 + 1], cl
jmp 0x592d21
cmp ebx, 0xff
jae 0x593918
imul esi, ebx, 0x101
mov edx, 0x8000
inc esi
shr esi, 1
sub edx, esi
mov ecx, esi
imul ecx, dword [esp + 0x38]
mov ebx, edx
imul ebx, dword [esp + 0x24]
mov eax, edx
imul eax, dword [esp + 0xc]
imul edx, dword [esp + 0x18]
add ecx, 0x4000
add ebx, ecx
mov ecx, esi
imul ecx, dword [esp + 0x44]
add eax, 0x4000
imul esi, dword [esp + 0x10]
shr ebx, 0xf
add ecx, eax
lea eax, [edx + 0x4000]
mov edx, dword [esp + 0x28]
add eax, esi
mov esi, dword [esp + 0x4c]
shr ecx, 0xf
shr eax, 0xf
mov byte [esi + edi*4], al
mov eax, dword [esp + 0x1c]
mov byte [esi + edi*4 + 2], bl
mov byte [esi + edi*4 + 1], cl
jmp 0x592d21
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x38]
mov ecx, dword [esp + 0x44]
mov byte [esi + edi*4], al
mov eax, dword [esp + 0x1c]
mov byte [esi + edi*4 + 2], bl
mov byte [esi + edi*4 + 1], cl
jmp 0x592d21
mov edx, dword [esp + 0x28]
mov al, byte [edi + edx]
mov byte [esp + 0x17], al
test al, al
je 0x592e45
movzx ecx, byte [esi + edi*4 + 1]
movzx eax, byte [esi + edi*4 + 2]
mov dword [esp + 0xc], ecx
movzx ecx, byte [esi + edi*4]
mov dword [esp + 0x38], ecx
mov ecx, eax
imul ecx, dword [esp + 0x20]
mov dword [esp + 0x44], eax
mov eax, 0x80808081
add ecx, 0x7f
mul ecx
mov ecx, dword [esp + 0xc]
imul ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x44]
shr edx, 7
sub eax, edx
add eax, dword [esp + 0x20]
mov dword [esp + 0x10], eax
add ecx, 0x7f
mov eax, 0x80808081
mul ecx
mov ecx, dword [esp + 0x38]
imul ecx, dword [esp + 0x34]
mov eax, dword [esp + 0xc]
shr edx, 7
sub eax, edx
add eax, dword [esp + 0x2c]
add ecx, 0x7f
mov dword [esp + 0x24], eax
mov eax, 0x80808081
mul ecx
mov ecx, dword [esp + 0x38]
shr edx, 7
sub ecx, edx
mov dl, byte [esp + 0x17]
add ecx, dword [esp + 0x34]
mov dword [esp + 0x18], ecx
cmp dl, 0xff
jae 0x593b00
mov eax, dword [esp + 0x1c]
cmp dword [eax + 0x34], 0
je 0x593b00
movzx eax, dl
mov ecx, 0xff
mov dword [esp + 0x40], eax
sub ecx, ebx
imul ecx, eax
mov esi, 0x8000
imul eax, ebx, 0xff
add eax, 0x7f
add ecx, eax
mov eax, 0x80808081
mul ecx
mov eax, ebx
shl eax, 0xf
mov ecx, edx
shr ecx, 7
xor edx, edx
div ecx
mov dword [esp + 0x58], ecx
mov edi, eax
sub esi, edi
mov edx, edi
imul edx, dword [esp + 0x10]
mov eax, esi
imul eax, dword [esp + 0x44]
mov ecx, edi
imul ecx, dword [esp + 0x24]
imul edi, dword [esp + 0x18]
add edx, 0x4000
add eax, edx
xor edx, edx
shr eax, 0xf
add ecx, 0x4000
mov dword [esp + 0x10], eax
mov eax, esi
imul eax, dword [esp + 0xc]
imul esi, dword [esp + 0x38]
add eax, ecx
shr eax, 0xf
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x40]
shl eax, 0xf
lea ebx, [esi + 0x4000]
div dword [esp + 0x58]
add ebx, edi
mov esi, 0x8000
mov edi, eax
shr ebx, 0xf
imul eax, dword [esp + 0x10]
sub esi, edi
mov edx, esi
mov ecx, esi
imul edx, dword [esp + 0x20]
imul ecx, dword [esp + 0x2c]
imul esi, dword [esp + 0x34]
add eax, 0x4000
add eax, edx
mov edx, 0xff
shr eax, 0xf
mov dword [esp + 0x10], eax
mov eax, edi
imul eax, dword [esp + 0xc]
imul edi, ebx
add eax, 0x4000
add eax, ecx
mov ecx, dword [esp + 0x40]
add ecx, dword [esp + 0x3c]
shr eax, 0xf
mov dword [esp + 0x24], eax
lea eax, [esi + 0x4000]
add eax, edi
mov edi, dword [esp + 0x50]
shr eax, 0xf
cmp ecx, edx
mov dword [esp + 0x18], eax
movzx eax, cl
mov ecx, dword [esp + 0x18]
cmovb edx, eax
mov eax, dword [esp + 0x28]
mov byte [edi + eax], dl
jmp 0x593b69
cmp ebx, 0xff
jae 0x593b6d
imul esi, ebx, 0x101
mov edx, 0x8000
inc esi
shr esi, 1
sub edx, esi
mov ecx, esi
imul ecx, dword [esp + 0x10]
mov eax, edx
imul eax, dword [esp + 0x44]
add ecx, 0x4000
add eax, ecx
mov ecx, esi
imul ecx, dword [esp + 0x24]
shr eax, 0xf
mov dword [esp + 0x10], eax
mov eax, edx
imul eax, dword [esp + 0xc]
imul edx, dword [esp + 0x38]
add ecx, 0x4000
add eax, ecx
mov ecx, dword [esp + 0x18]
imul ecx, esi
shr eax, 0xf
mov dword [esp + 0x24], eax
add ecx, 0x4000
add ecx, edx
shr ecx, 0xf
mov esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x10]
mov byte [esi + edi*4 + 2], al
mov eax, dword [esp + 0x24]
mov byte [esi + edi*4 + 1], al
jmp 0x592d16
mov edx, dword [esp + 0x28]
mov al, byte [edi + edx]
mov byte [esp + 0x17], al
test al, al
je 0x592e45
movzx eax, byte [esi + edi*4 + 2]
movzx edx, byte [esi + edi*4 + 1]
movzx esi, byte [esi + edi*4]
mov ecx, dword [esp + 0x20]
add ecx, eax
mov dword [esp + 0x38], edx
add edx, dword [esp + 0x2c]
mov dword [esp + 0x44], esi
add esi, dword [esp + 0x34]
cmp dword [esp + 0x70], ecx
mov dword [esp + 0x18], eax
lea eax, [ecx - 0xff]
sbb ecx, ecx
and ecx, eax
cmp dword [esp + 0x70], edx
lea eax, [edx - 0xff]
mov dword [esp + 0x10], ecx
sbb edx, edx
and edx, eax
lea eax, [esi - 0xff]
mov dword [esp + 0xc], edx
mov edx, 0xff
cmp edx, esi
sbb edx, edx
and edx, eax
mov dword [esp + 0x24], edx
mov dl, byte [esp + 0x17]
cmp dl, 0xff
jae 0x593d30
mov eax, dword [esp + 0x1c]
cmp dword [eax + 0x34], 0
je 0x593d30
movzx eax, dl
mov ecx, 0xff
mov dword [esp + 0x58], eax
sub ecx, ebx
imul ecx, eax
mov esi, 0x8000
imul eax, ebx, 0xff
shl ebx, 0xf
add eax, 0x7f
add ecx, eax
mov eax, 0x80808081
mul ecx
mov eax, ebx
mov ecx, edx
xor edx, edx
shr ecx, 7
div ecx
mov dword [esp + 0x40], ecx
xor edx, edx
mov edi, eax
mov eax, dword [esp + 0x10]
imul eax, edi
sub esi, edi
mov ebx, esi
mov ecx, esi
imul ebx, dword [esp + 0x18]
imul ecx, dword [esp + 0x38]
imul esi, dword [esp + 0x44]
add eax, 0x4000
add ebx, eax
mov eax, edi
imul eax, dword [esp + 0xc]
add ecx, 0x4000
add esi, 0x4000
shr ebx, 0xf
add eax, ecx
shr eax, 0xf
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x24]
imul eax, edi
add eax, esi
mov esi, 0x8000
shr eax, 0xf
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x58]
shl eax, 0xf
div dword [esp + 0x40]
mov edi, eax
sub esi, edi
mov edx, edi
imul edx, ebx
mov eax, esi
imul eax, dword [esp + 0x20]
mov ecx, edi
imul edi, dword [esp + 0x18]
mov ebx, esi
imul ecx, dword [esp + 0xc]
imul ebx, dword [esp + 0x2c]
imul esi, dword [esp + 0x34]
add eax, 0x4000
add eax, edx
mov edx, dword [esp + 0x28]
shr eax, 0xf
add ecx, 0x4000
mov dword [esp + 0x10], eax
add ebx, ecx
mov ecx, dword [esp + 0x10]
lea eax, [edi + 0x4000]
mov edi, dword [esp + 0x50]
add eax, esi
mov esi, dword [esp + 0x4c]
shr ebx, 0xf
shr eax, 0xf
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x40]
mov byte [edi + edx], al
mov eax, dword [esp + 0x24]
mov byte [esi + edi*4], al
mov eax, dword [esp + 0x1c]
mov byte [esi + edi*4 + 2], cl
mov byte [esi + edi*4 + 1], bl
jmp 0x592d21
cmp ebx, 0xff
jae 0x593d9b
imul esi, ebx, 0x101
mov edx, 0x8000
inc esi
shr esi, 1
imul ecx, esi
sub edx, esi
mov eax, edx
mov ebx, esi
imul eax, dword [esp + 0x18]
imul ebx, dword [esp + 0xc]
add ecx, 0x4000
add ecx, eax
shr ecx, 0xf
mov dword [esp + 0x10], ecx
mov ecx, edx
imul ecx, dword [esp + 0x38]
imul edx, dword [esp + 0x44]
add ecx, 0x4000
add ebx, ecx
add edx, 0x4000
mov ecx, dword [esp + 0x24]
imul ecx, esi
shr ebx, 0xf
add ecx, edx
shr ecx, 0xf
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x10]
jmp 0x593d9f
mov ebx, dword [esp + 0xc]
mov esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x28]
mov byte [esi + edi*4], al
mov eax, dword [esp + 0x1c]
mov byte [esi + edi*4 + 2], cl
mov byte [esi + edi*4 + 1], bl
jmp 0x592d21
mov edx, dword [esp + 0x28]
mov al, byte [edi + edx]
mov byte [esp + 0x17], al
test al, al
je 0x592e45
movzx eax, byte [esi + edi*4]
movzx edx, byte [esi + edi*4 + 2]
movzx ecx, byte [esi + edi*4 + 1]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x20]
add eax, edx
mov dword [esp + 0x38], edx
mov dword [esp + 0xc], ecx
cmp eax, 0xff
jb 0x593e36
cmp dword [esp + 0x20], 0
je 0x593e2c
cmp edx, 0xff
jae 0x593e2c
imul ecx, edx, 0xff
mov eax, 0xfe01
xor edx, edx
sub eax, ecx
mov ecx, 0xff
div dword [esp + 0x20]
sub ecx, eax
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0xc]
jmp 0x593e3e
mov dword [esp + 0x3c], 0xff
jmp 0x593e3e
mov dword [esp + 0x3c], 0
mov edx, dword [esp + 0x2c]
lea eax, [ecx + edx]
cmp eax, 0xff
jb 0x593e82
test edx, edx
je 0x593e78
cmp ecx, 0xff
jae 0x593e78
imul ecx, ecx, 0xff
mov eax, 0xfe01
xor edx, edx
sub eax, ecx
mov ecx, 0xff
div dword [esp + 0x2c]
sub ecx, eax
mov dword [esp + 0x24], ecx
jmp 0x593e8a
mov dword [esp + 0x24], 0xff
jmp 0x593e8a
mov dword [esp + 0x24], 0
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x18]
lea eax, [edx + ecx]
cmp eax, 0xff
jb 0x593ed4
test ecx, ecx
je 0x593eca
cmp edx, 0xff
jae 0x593eca
imul ecx, edx, 0xff
mov eax, 0xfe01
xor edx, edx
sub eax, ecx
div dword [esp + 0x34]
mov edx, 0xff
mov ecx, edx
sub ecx, eax
mov dword [esp + 0x10], ecx
jmp 0x593ee1
mov dword [esp + 0x10], 0xff
jmp 0x593edc
mov dword [esp + 0x10], 0
mov edx, 0xff
mov cl, byte [esp + 0x17]
cmp cl, 0xff
jae 0x594010
mov eax, dword [esp + 0x1c]
cmp dword [eax + 0x34], 0
je 0x594010
movzx eax, cl
mov esi, 0x8000
mov dword [esp + 0x58], eax
mov ecx, edx
sub ecx, ebx
imul ecx, eax
imul eax, ebx, 0xff
shl ebx, 0xf
add eax, 0x7f
add ecx, eax
mov eax, 0x80808081
mul ecx
mov eax, ebx
mov ecx, edx
xor edx, edx
shr ecx, 7
div ecx
mov dword [esp + 0x40], ecx
mov edi, eax
sub esi, edi
mov ecx, edi
imul ecx, dword [esp + 0x24]
mov eax, esi
imul eax, dword [esp + 0xc]
mov edx, edi
imul edi, dword [esp + 0x10]
mov ebx, esi
imul edx, dword [esp + 0x3c]
imul ebx, dword [esp + 0x38]
add ecx, 0x4000
add eax, ecx
shr eax, 0xf
add edi, 0x4000
mov dword [esp + 0xc], eax
add edx, 0x4000
mov eax, dword [esp + 0x18]
add ebx, edx
imul eax, esi
xor edx, edx
shr ebx, 0xf
mov esi, 0x8000
add eax, edi
shr eax, 0xf
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x58]
shl eax, 0xf
div dword [esp + 0x40]
mov edi, eax
imul eax, ebx
sub esi, edi
mov ebx, edi
imul ebx, dword [esp + 0xc]
mov edx, esi
imul edi, dword [esp + 0x18]
mov ecx, esi
imul edx, dword [esp + 0x20]
imul ecx, dword [esp + 0x2c]
imul esi, dword [esp + 0x34]
add ebx, 0x4000
add edx, 0x4000
add eax, edx
add ebx, ecx
mov edx, dword [esp + 0x28]
lea ecx, [edi + 0x4000]
mov edi, dword [esp + 0x50]
add ecx, esi
mov esi, dword [esp + 0x4c]
shr eax, 0xf
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x40]
mov byte [edi + edx], al
mov eax, dword [esp + 0x3c]
shr ebx, 0xf
shr ecx, 0xf
mov byte [esi + edi*4 + 2], al
mov eax, dword [esp + 0x1c]
mov byte [esi + edi*4 + 1], bl
mov byte [esi + edi*4], cl
jmp 0x592d21
cmp ebx, 0xff
jae 0x59407b
imul esi, ebx, 0x101
mov edx, 0x8000
inc esi
shr esi, 1
sub edx, esi
mov ecx, esi
imul ecx, dword [esp + 0x3c]
mov eax, edx
imul eax, dword [esp + 0x38]
mov ebx, edx
imul ebx, dword [esp + 0xc]
add ecx, 0x4000
add eax, ecx
mov ecx, esi
imul ecx, dword [esp + 0x24]
imul esi, dword [esp + 0x10]
shr eax, 0xf
mov dword [esp + 0x3c], eax
add ecx, 0x4000
add ebx, ecx
add esi, 0x4000
mov ecx, dword [esp + 0x18]
imul ecx, edx
shr ebx, 0xf
add ecx, esi
mov esi, dword [esp + 0x4c]
shr ecx, 0xf
jmp 0x594083
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0x24]
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x28]
mov byte [esi + edi*4 + 2], al
mov eax, dword [esp + 0x1c]
mov byte [esi + edi*4 + 1], bl
mov byte [esi + edi*4], cl
jmp 0x592d21
mov edx, dword [esp + 0x28]
mov al, byte [edi + edx]
mov byte [esp + 0x17], al
test al, al
je 0x592e45
movzx eax, byte [esi + edi*4 + 2]
mov edx, dword [esp + 0x20]
movzx ecx, byte [esi + edi*4 + 1]
mov dword [esp + 0xc], eax
movzx eax, byte [esi + edi*4]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0xc]
add eax, edx
mov dword [esp + 0x18], ecx
cmp eax, 0xff
jbe 0x5940e7
mov dword [esp + 0x44], 0xff
jmp 0x594114
cmp edx, 0xff
jae 0x59410c
imul eax, dword [esp + 0xc], 0xff
mov ecx, 0xff
sub ecx, edx
xor edx, edx
div ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x44], eax
jmp 0x594114
mov dword [esp + 0x44], 0
mov edx, dword [esp + 0x2c]
lea eax, [ecx + edx]
cmp eax, 0xff
jbe 0x59412c
mov dword [esp + 0x38], 0xff
jmp 0x594153
cmp edx, 0xff
jae 0x59414b
imul eax, ecx, 0xff
mov ecx, 0xff
sub ecx, edx
xor edx, edx
div ecx
mov dword [esp + 0x38], eax
jmp 0x594153
mov dword [esp + 0x38], 0
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x24]
lea eax, [ecx + edx]
cmp eax, 0xff
jbe 0x59416f
mov dword [esp + 0x10], 0xff
jmp 0x594196
cmp edx, 0xff
jae 0x59418e
imul eax, ecx, 0xff
mov ecx, 0xff
sub ecx, edx
xor edx, edx
div ecx
mov dword [esp + 0x10], eax
jmp 0x594196
mov dword [esp + 0x10], 0
mov cl, byte [esp + 0x17]
cmp cl, 0xff
jae 0x5942c4
mov eax, dword [esp + 0x1c]
cmp dword [eax + 0x34], 0
je 0x5942c4
movzx eax, cl
mov esi, 0x8000
mov dword [esp + 0x40], eax
mov ecx, 0xff
sub ecx, ebx
imul ecx, eax
imul eax, ebx, 0xff
add eax, 0x7f
add ecx, eax
mov eax, 0x80808081
mul ecx
mov eax, ebx
shl eax, 0xf
mov ecx, edx
xor edx, edx
shr ecx, 7
div ecx
mov dword [esp + 0x58], ecx
mov edi, eax
sub esi, edi
mov ecx, edi
imul ecx, dword [esp + 0x38]
mov eax, esi
imul eax, dword [esp + 0x18]
mov ebx, esi
imul esi, dword [esp + 0x24]
mov edx, edi
imul edx, dword [esp + 0x44]
imul ebx, dword [esp + 0xc]
imul edi, dword [esp + 0x10]
add ecx, 0x4000
add eax, ecx
shr eax, 0xf
mov dword [esp + 0xc], eax
add edx, 0x4000
add ebx, edx
xor edx, edx
lea eax, [esi + 0x4000]
shr ebx, 0xf
add eax, edi
mov esi, 0x8000
shr eax, 0xf
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x40]
shl eax, 0xf
div dword [esp + 0x58]
mov edi, eax
imul eax, ebx
sub esi, edi
mov edx, esi
mov ecx, esi
imul edx, dword [esp + 0x20]
imul ecx, dword [esp + 0x2c]
imul esi, dword [esp + 0x34]
add edx, 0x4000
add eax, edx
mov edx, 0xff
shr eax, 0xf
mov dword [esp + 0x44], eax
mov eax, edi
imul eax, dword [esp + 0xc]
imul edi, dword [esp + 0x18]
add eax, 0x4000
add eax, ecx
mov ecx, dword [esp + 0x40]
add ecx, dword [esp + 0x3c]
shr eax, 0xf
lea ebx, [edi + 0x4000]
mov dword [esp + 0x38], eax
mov edi, dword [esp + 0x50]
add ebx, esi
mov esi, dword [esp + 0x4c]
shr ebx, 0xf
cmp ecx, edx
movzx eax, cl
cmovb edx, eax
mov eax, dword [esp + 0x28]
mov byte [edi + eax], dl
jmp 0x594335
cmp ebx, 0xff
jae 0x594331
imul esi, ebx, 0x101
mov edx, 0x8000
inc esi
shr esi, 1
sub edx, esi
mov ecx, esi
imul ecx, dword [esp + 0x44]
mov eax, edx
imul eax, dword [esp + 0xc]
mov ebx, edx
imul ebx, dword [esp + 0x18]
imul edx, dword [esp + 0x24]
add ecx, 0x4000
add eax, ecx
mov ecx, esi
imul ecx, dword [esp + 0x38]
add ebx, 0x4000
imul esi, dword [esp + 0x10]
shr eax, 0xf
mov dword [esp + 0x44], eax
add ebx, ecx
shr ebx, 0xf
mov dword [esp + 0x38], ebx
lea ebx, [esi + 0x4000]
mov esi, dword [esp + 0x4c]
add ebx, edx
shr ebx, 0xf
jmp 0x594335
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x44]
mov byte [esi + edi*4 + 2], al
mov eax, dword [esp + 0x38]
mov byte [esi + edi*4 + 1], al
mov byte [esi + edi*4], bl
jmp 0x592d19
mov edx, dword [esp + 0x28]
mov al, byte [edi + edx]
mov byte [esp + 0x4b], al
test al, al
je 0x592e45
movzx ecx, byte [esi + edi*4 + 1]
movzx eax, byte [esi + edi*4 + 2]
mov edx, dword [esp + 0x20]
mov dword [esp + 0x58], ecx
movzx ecx, byte [esi + edi*4]
mov esi, dword [esp + 0x34]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x40], esi
mov esi, dword [esp + 0x4c]
mov dword [esp + 0x18], eax
mov dword [esp + 0xc], ecx
cmp ebx, 0xff
jae 0x5943d5
imul eax, ebx, 0x101
mov ebx, dword [esp + 0x40]
inc eax
shr eax, 1
imul ecx, eax
imul edx, eax
imul ebx, eax
mov eax, dword [esp + 0x18]
add ecx, 0x4000
add edx, 0x4000
shr ecx, 0xf
add ebx, 0x4000
shr edx, 0xf
mov dword [esp + 0xc], ecx
shr ebx, 0xf
jmp 0x5943d9
mov ebx, dword [esp + 0x40]
add eax, edx
cmp eax, 0xff
jbe 0x5943e9
mov byte [esp + 0x56], 0xff
jmp 0x594413
cmp edx, 0xff
jae 0x59440e
imul eax, dword [esp + 0x18], 0xff
mov ecx, 0xff
sub ecx, edx
xor edx, edx
div ecx
mov ecx, dword [esp + 0xc]
mov byte [esp + 0x56], al
jmp 0x594413
mov byte [esp + 0x56], 0
mov edx, dword [esp + 0x58]
lea eax, [ecx + edx]
cmp eax, 0xff
jbe 0x594428
mov byte [esp + 0x57], 0xff
jmp 0x59444e
cmp ecx, 0xff
jae 0x594449
imul eax, edx, 0xff
mov ecx, 0xff
sub ecx, dword [esp + 0xc]
xor edx, edx
div ecx
mov byte [esp + 0x57], al
jmp 0x59444e
mov byte [esp + 0x57], 0
mov ecx, dword [esp + 0x10]
lea eax, [ebx + ecx]
cmp eax, 0xff
jbe 0x594461
or cl, 0xff
jmp 0x594484
cmp ebx, 0xff
jae 0x594482
imul eax, ecx, 0xff
xor edx, edx
mov ecx, 0xff
sub ecx, ebx
div ecx
mov cl, al
mov byte [esp + 0x17], al
jmp 0x594488
xor cl, cl
mov byte [esp + 0x17], cl
mov dl, byte [esp + 0x4b]
mov eax, dword [esp + 0x1c]
cmp dl, 0xff
jae 0x594563
cmp dword [eax + 0x34], 0
je 0x594563
imul eax, dword [esp + 0x3c], 0xff
mov ecx, 0xff
sub ecx, dword [esp + 0x3c]
mov edi, 0x8000
movzx ebx, dl
imul ecx, ebx
add eax, 0x7f
add ecx, eax
mov eax, 0x80808081
mul ecx
mov eax, ebx
shl eax, 0xf
mov ecx, edx
shr ecx, 7
xor edx, edx
div ecx
movzx edx, byte [esp + 0x56]
mov esi, eax
mov eax, dword [esp + 0x4c]
sub edi, esi
imul edx, esi
mov ecx, edi
imul ecx, dword [esp + 0x20]
add edx, 0x4000
add ecx, edx
mov edx, dword [esp + 0x50]
shr ecx, 0xf
mov byte [eax + edx*4 + 2], cl
mov eax, edi
imul eax, dword [esp + 0x2c]
movzx ecx, byte [esp + 0x57]
imul edi, dword [esp + 0x34]
imul ecx, esi
add edi, 0x4000
add ecx, 0x4000
add eax, ecx
mov ecx, dword [esp + 0x4c]
shr eax, 0xf
mov byte [ecx + edx*4 + 1], al
movzx eax, byte [esp + 0x17]
imul eax, esi
mov esi, ecx
mov ecx, dword [esp + 0x3c]
add ecx, ebx
add eax, edi
mov edi, edx
shr eax, 0xf
mov edx, 0xff
cmp ecx, edx
mov byte [esi + edi*4], al
movzx eax, cl
cmovb edx, eax
mov eax, dword [esp + 0x28]
mov byte [edi + eax], dl
jmp 0x592d19
mov dl, byte [esp + 0x56]
mov ch, byte [esp + 0x57]
mov byte [esi + edi*4 + 2], dl
mov byte [esi + edi*4 + 1], ch
mov byte [esi + edi*4], cl
jmp 0x592d1d
mov edx, dword [esp + 0x28]
mov al, byte [edi + edx]
mov byte [esp + 0x4b], al
test al, al
je 0x592e45
movzx eax, byte [esi + edi*4 + 1]
movzx ecx, byte [esi + edi*4 + 2]
mov dword [esp + 0xc], eax
movzx eax, byte [esi + edi*4]
mov dword [esp + 0x18], eax
mov eax, 0x80808081
mov dword [esp + 0x44], ecx
cmp ecx, 0x80
jae 0x5945ca
imul ecx, dword [esp + 0x20]
lea ecx, [ecx*2 + 0x7f]
mul ecx
mov eax, edx
shr eax, 7
jmp 0x5945e8
imul ecx, dword [esp + 0x20]
add ecx, 0x7f
mul ecx
mov eax, dword [esp + 0x44]
shr edx, 7
sub eax, edx
add eax, dword [esp + 0x20]
lea eax, [eax*2 - 0xff]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xc]
cmp eax, 0x80
jae 0x594611
imul eax, dword [esp + 0x2c]
lea ecx, [eax*2 + 0x7f]
mov eax, 0x80808081
mul ecx
mov eax, edx
shr eax, 7
jmp 0x594636
mov ecx, eax
mov eax, 0x80808081
imul ecx, dword [esp + 0x2c]
add ecx, 0x7f
mul ecx
mov eax, dword [esp + 0xc]
shr edx, 7
sub eax, edx
add eax, dword [esp + 0x2c]
lea eax, [eax*2 - 0xff]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x18]
cmp eax, 0x80
jae 0x59465f
imul eax, dword [esp + 0x34]
lea ecx, [eax*2 + 0x7f]
mov eax, 0x80808081
mul ecx
mov eax, edx
shr eax, 7
jmp 0x594684
mov ecx, eax
mov eax, 0x80808081
imul ecx, dword [esp + 0x34]
add ecx, 0x7f
mul ecx
mov eax, dword [esp + 0x18]
shr edx, 7
sub eax, edx
add eax, dword [esp + 0x34]
lea eax, [eax*2 - 0xff]
mov cl, byte [esp + 0x4b]
mov dword [esp + 0x24], eax
cmp cl, 0xff
jae 0x5947b8
mov eax, dword [esp + 0x1c]
cmp dword [eax + 0x34], 0
je 0x5947b8
movzx eax, cl
mov esi, 0x8000
mov dword [esp + 0x58], eax
mov ecx, 0xff
sub ecx, ebx
imul ecx, eax
imul eax, ebx, 0xff
shl ebx, 0xf
add eax, 0x7f
add ecx, eax
mov eax, 0x80808081
mul ecx
mov eax, ebx
mov ecx, edx
xor edx, edx
shr ecx, 7
div ecx
mov dword [esp + 0x40], ecx
mov edi, eax
sub esi, edi
mov ecx, edi
imul ecx, dword [esp + 0x38]
mov eax, esi
imul eax, dword [esp + 0xc]
mov ebx, esi
imul esi, dword [esp + 0x18]
mov edx, edi
imul edx, dword [esp + 0x10]
imul edi, dword [esp + 0x24]
imul ebx, dword [esp + 0x44]
add ecx, 0x4000
add eax, ecx
shr eax, 0xf
mov dword [esp + 0xc], eax
add edx, 0x4000
add ebx, edx
lea eax, [esi + 0x4000]
add eax, edi
shr ebx, 0xf
shr eax, 0xf
xor edx, edx
mov dword [esp + 0x18], eax
mov esi, 0x8000
mov eax, dword [esp + 0x58]
shl eax, 0xf
div dword [esp + 0x40]
mov edi, eax
imul eax, ebx
sub esi, edi
mov ebx, edi
imul ebx, dword [esp + 0xc]
mov edx, esi
imul edi, dword [esp + 0x18]
mov ecx, esi
imul edx, dword [esp + 0x20]
imul ecx, dword [esp + 0x2c]
imul esi, dword [esp + 0x34]
add ebx, 0x4000
add edx, 0x4000
add eax, edx
add ebx, ecx
mov edx, dword [esp + 0x28]
lea ecx, [edi + 0x4000]
mov edi, dword [esp + 0x50]
add ecx, esi
mov esi, dword [esp + 0x4c]
shr eax, 0xf
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x40]
mov byte [edi + edx], al
mov eax, dword [esp + 0x10]
shr ebx, 0xf
shr ecx, 0xf
mov byte [esi + edi*4 + 2], al
mov eax, dword [esp + 0x1c]
mov byte [esi + edi*4 + 1], bl
mov byte [esi + edi*4], cl
jmp 0x592d21
cmp ebx, 0xff
jae 0x594821
imul esi, ebx, 0x101
mov edx, 0x8000
inc esi
shr esi, 1
sub edx, esi
mov ecx, esi
imul ecx, dword [esp + 0x10]
mov eax, edx
imul eax, dword [esp + 0x44]
mov ebx, edx
imul edx, dword [esp + 0x18]
imul ebx, dword [esp + 0xc]
add ecx, 0x4000
add eax, ecx
mov ecx, esi
imul ecx, dword [esp + 0x38]
imul esi, dword [esp + 0x24]
shr eax, 0xf
mov dword [esp + 0x10], eax
add ecx, 0x4000
add ebx, ecx
lea ecx, [edx + 0x4000]
add ecx, esi
shr ebx, 0xf
mov esi, dword [esp + 0x4c]
shr ecx, 0xf
jmp 0x594829
mov ecx, dword [esp + 0x24]
mov ebx, dword [esp + 0x38]
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x28]
mov byte [esi + edi*4 + 2], al
mov eax, dword [esp + 0x1c]
mov byte [esi + edi*4 + 1], bl
mov byte [esi + edi*4], cl
jmp 0x592d21
mov edx, dword [esp + 0x28]
mov al, byte [edi + edx]
mov byte [esp + 0x4b], al
test al, al
je 0x592e45
movzx eax, byte [esi + edi*4 + 1]
movzx edx, byte [esi + edi*4 + 2]
mov dword [esp + 0x38], eax
movzx eax, byte [esi + edi*4]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x18], edx
cmp eax, 0x80
jae 0x5948ae
add eax, eax
mov ecx, 0xff
sub ecx, eax
mov eax, 0xff
sub eax, edx
imul ecx, eax
mov eax, 0x81018203
imul ecx, edx
add ecx, 0x7f00
mul ecx
mov eax, dword [esp + 0x18]
shr edx, 0xf
sub eax, edx
jmp 0x59495c
cmp edx, 0x40
jae 0x5948e8
mov ecx, edx
lea eax, [eax*2 - 0xff]
shl ecx, 4
sub ecx, 0xbf4
imul ecx, edx
add ecx, 0x2fa03
imul ecx, eax
mov eax, 0x103060a1
imul ecx, edx
add ecx, 0x7e817f
mul ecx
mov eax, edx
shr eax, 0x14
jmp 0x594958
movd xmm0, edx
mov eax, edx
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
xorps xmm1, xmm1
addsd xmm0, qword [eax*8 + 0x661aa0]
mulsd xmm0, qword [esp + 0x80]
ucomisd xmm1, xmm0
movsd qword [esp + 0x58], xmm0
ja 0x59491c
sqrtsd xmm0, xmm0
jmp 0x594921
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
mov eax, dword [esp + 0x20]
subsd xmm0, qword [esp + 0x58]
lea eax, [eax*2 - 0xff]
movd xmm1, eax
cvtdq2pd xmm1, xmm1
shr eax, 0x1f
addsd xmm1, qword [eax*8 + 0x661aa0]
mulsd xmm0, xmm1
addsd xmm0, qword [esp + 0x88]
call fcn.005a5445
add eax, dword [esp + 0x18]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x2c]
cmp eax, 0x80
jae 0x59499d
add eax, eax
mov edx, 0xff
mov ecx, edx
sub edx, dword [esp + 0x38]
sub ecx, eax
mov eax, 0x81018203
imul ecx, edx
imul ecx, dword [esp + 0x38]
add ecx, 0x7f00
mul ecx
mov eax, dword [esp + 0x38]
shr edx, 0xf
sub eax, edx
jmp 0x594a4f
mov edx, dword [esp + 0x38]
cmp edx, 0x40
jae 0x5949db
mov ecx, edx
lea eax, [eax*2 - 0xff]
shl ecx, 4
sub ecx, 0xbf4
imul ecx, edx
add ecx, 0x2fa03
imul ecx, eax
mov eax, 0x103060a1
imul ecx, edx
add ecx, 0x7e817f
mul ecx
mov eax, edx
shr eax, 0x14
jmp 0x594a4b
movd xmm0, edx
mov eax, edx
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
xorps xmm1, xmm1
addsd xmm0, qword [eax*8 + 0x661aa0]
mulsd xmm0, qword [esp + 0x80]
ucomisd xmm1, xmm0
movsd qword [esp + 0x58], xmm0
ja 0x594a0f
sqrtsd xmm0, xmm0
jmp 0x594a14
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
mov eax, dword [esp + 0x2c]
subsd xmm0, qword [esp + 0x58]
lea eax, [eax*2 - 0xff]
movd xmm1, eax
cvtdq2pd xmm1, xmm1
shr eax, 0x1f
addsd xmm1, qword [eax*8 + 0x661aa0]
mulsd xmm0, xmm1
addsd xmm0, qword [esp + 0x88]
call fcn.005a5445
add eax, dword [esp + 0x38]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x34]
cmp eax, 0x80
jae 0x594a96
add eax, eax
mov edx, 0xff
mov ecx, edx
sub edx, dword [esp + 0x44]
sub ecx, eax
mov eax, 0x81018203
imul ecx, edx
imul ecx, dword [esp + 0x44]
add ecx, 0x7f00
mul ecx
mov eax, dword [esp + 0x44]
shr edx, 0xf
sub eax, edx
mov dword [esp + 0x10], eax
mov edx, eax
jmp 0x594b4c
mov edx, dword [esp + 0x44]
cmp edx, 0x40
jae 0x594ad2
mov ecx, edx
lea eax, [eax*2 - 0xff]
shl ecx, 4
sub ecx, 0xbf4
imul ecx, edx
add ecx, 0x2fa03
imul ecx, eax
mov eax, 0x103060a1
imul ecx, edx
add ecx, 0x7e817f
mul ecx
shr edx, 0x14
jmp 0x594b44
movd xmm0, edx
mov eax, edx
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
xorps xmm1, xmm1
addsd xmm0, qword [eax*8 + 0x661aa0]
mulsd xmm0, qword [esp + 0x80]
ucomisd xmm1, xmm0
movsd qword [esp + 0x58], xmm0
ja 0x594b06
sqrtsd xmm0, xmm0
jmp 0x594b0b
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
mov eax, dword [esp + 0x34]
subsd xmm0, qword [esp + 0x58]
lea eax, [eax*2 - 0xff]
movd xmm1, eax
cvtdq2pd xmm1, xmm1
shr eax, 0x1f
addsd xmm1, qword [eax*8 + 0x661aa0]
mulsd xmm0, xmm1
addsd xmm0, qword [esp + 0x88]
call fcn.005a5445
mov edx, eax
add edx, dword [esp + 0x44]
mov dword [esp + 0x10], edx
mov cl, byte [esp + 0x4b]
cmp cl, 0xff
jae 0x594c70
mov eax, dword [esp + 0x1c]
cmp dword [eax + 0x34], 0
je 0x594c70
movzx eax, cl
mov ecx, 0xff
mov dword [esp + 0x40], eax
sub ecx, ebx
imul ecx, eax
imul eax, ebx, 0xff
mov edi, dword [esp + 0x18]
add eax, 0x7f
add ecx, eax
mov eax, 0x80808081
mul ecx
mov eax, ebx
mov ecx, 0x8000
shl eax, 0xf
mov esi, edx
xor edx, edx
shr esi, 7
div esi
mov edx, dword [esp + 0x24]
imul edx, eax
sub ecx, eax
mov ebx, dword [esp + 0x38]
imul edi, ecx
imul ebx, ecx
add edx, 0x4000
add edi, edx
mov edx, dword [esp + 0xc]
imul edx, eax
shr edi, 0xf
add edx, 0x4000
add ebx, edx
mov edx, dword [esp + 0x10]
imul edx, eax
mov eax, dword [esp + 0x44]
imul eax, ecx
mov ecx, dword [esp + 0x40]
add ecx, dword [esp + 0x3c]
add edx, 0x4000
shr ebx, 0xf
add eax, edx
xor edx, edx
shr eax, 0xf
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x40]
shl eax, 0xf
div esi
mov esi, 0x8000
mov edx, eax
sub esi, edx
imul edi, edx
mov eax, esi
imul ebx, edx
imul eax, dword [esp + 0x20]
add edi, 0x4000
add eax, edi
mov edi, dword [esp + 0x50]
shr eax, 0xf
mov dword [esp + 0x24], eax
mov eax, esi
imul eax, dword [esp + 0x2c]
imul esi, dword [esp + 0x34]
add eax, 0x4000
add ebx, eax
add esi, 0x4000
mov eax, dword [esp + 0x58]
imul eax, edx
mov edx, 0xff
shr ebx, 0xf
add eax, esi
mov esi, dword [esp + 0x4c]
shr eax, 0xf
cmp ecx, edx
mov dword [esp + 0x10], eax
movzx eax, cl
cmovb edx, eax
mov eax, dword [esp + 0x28]
mov byte [edi + eax], dl
jmp 0x594ce1
cmp ebx, 0xff
jae 0x594cdd
mov edi, dword [esp + 0x18]
mov eax, 0x8000
imul ecx, ebx, 0x101
mov ebx, dword [esp + 0x24]
inc ecx
shr ecx, 1
sub eax, ecx
imul ebx, ecx
imul edi, eax
imul edx, ecx
add edi, 0x4000
add ebx, edi
add edx, 0x4000
mov edi, dword [esp + 0x38]
shr ebx, 0xf
mov dword [esp + 0x24], ebx
mov ebx, dword [esp + 0xc]
imul ebx, ecx
mov ecx, dword [esp + 0x44]
imul edi, eax
imul ecx, eax
add edi, 0x4000
add ebx, edi
add edx, ecx
mov edi, dword [esp + 0x50]
shr ebx, 0xf
shr edx, 0xf
mov dword [esp + 0x10], edx
jmp 0x594ce1
mov ebx, dword [esp + 0xc]
mov edx, dword [esp + 0x24]
mov byte [esi + edi*4 + 2], dl
mov edx, dword [esp + 0x10]
mov byte [esi + edi*4 + 1], bl
mov byte [esi + edi*4], dl
jmp 0x592d19
mov edx, dword [esp + 0x28]
mov al, byte [edi + edx]
mov byte [esp + 0x4b], al
test al, al
je 0x592e45
movzx ecx, byte [esi + edi*4 + 1]
movzx eax, byte [esi + edi*4 + 2]
mov edx, dword [esp + 0x20]
mov dword [esp + 0xc], ecx
movzx ecx, byte [esi + edi*4]
mov dword [esp + 0x44], eax
mov dword [esp + 0x18], ecx
cmp edx, 0x80
jae 0x594d4a
imul eax, edx
lea ecx, [eax*2 + 0x7f]
mov eax, 0x80808081
mul ecx
mov eax, edx
shr eax, 7
jmp 0x594d6d
mov ecx, eax
mov eax, 0x80808081
imul ecx, edx
add ecx, 0x7f
mul ecx
mov eax, dword [esp + 0x44]
shr edx, 7
sub eax, edx
add eax, dword [esp + 0x20]
lea eax, [eax*2 - 0xff]
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x10], eax
cmp edx, 0x80
jae 0x594d99
mov eax, dword [esp + 0xc]
imul eax, edx
lea ecx, [eax*2 + 0x7f]
mov eax, 0x80808081
mul ecx
mov eax, edx
shr eax, 7
jmp 0x594dbe
mov ecx, dword [esp + 0xc]
mov eax, 0x80808081
imul ecx, edx
add ecx, 0x7f
mul ecx
mov eax, dword [esp + 0xc]
shr edx, 7
sub eax, edx
add eax, dword [esp + 0x2c]
lea eax, [eax*2 - 0xff]
mov edx, dword [esp + 0x34]
mov dword [esp + 0x24], eax
cmp edx, 0x80
jae 0x594dea
mov eax, dword [esp + 0x18]
imul eax, edx
lea ecx, [eax*2 + 0x7f]
mov eax, 0x80808081
mul ecx
mov eax, edx
shr eax, 7
jmp 0x594e0f
mov ecx, dword [esp + 0x18]
mov eax, 0x80808081
imul ecx, edx
add ecx, 0x7f
mul ecx
mov eax, dword [esp + 0x18]
shr edx, 7
sub eax, edx
add eax, dword [esp + 0x34]
lea eax, [eax*2 - 0xff]
mov cl, byte [esp + 0x4b]
mov dword [esp + 0x38], eax
cmp cl, 0xff
jae 0x594f43
mov eax, dword [esp + 0x1c]
cmp dword [eax + 0x34], 0
je 0x594f43
movzx eax, cl
mov esi, 0x8000
mov dword [esp + 0x40], eax
mov ecx, 0xff
sub ecx, ebx
imul ecx, eax
imul eax, ebx, 0xff
add eax, 0x7f
add ecx, eax
mov eax, 0x80808081
mul ecx
mov eax, ebx
shl eax, 0xf
mov ecx, edx
shr ecx, 7
xor edx, edx
div ecx
mov dword [esp + 0x58], ecx
mov edi, eax
sub esi, edi
mov ecx, edi
imul ecx, dword [esp + 0x24]
mov eax, esi
imul eax, dword [esp + 0xc]
mov ebx, esi
imul esi, dword [esp + 0x18]
mov edx, edi
imul edx, dword [esp + 0x10]
imul edi, dword [esp + 0x38]
imul ebx, dword [esp + 0x44]
add ecx, 0x4000
add eax, ecx
shr eax, 0xf
mov dword [esp + 0xc], eax
add edx, 0x4000
lea eax, [esi + 0x4000]
add ebx, edx
add eax, edi
shr ebx, 0xf
shr eax, 0xf
xor edx, edx
mov dword [esp + 0x18], eax
mov esi, 0x8000
mov eax, dword [esp + 0x40]
shl eax, 0xf
div dword [esp + 0x58]
mov edi, eax
sub esi, edi
mov edx, edi
imul edx, ebx
mov eax, esi
imul eax, dword [esp + 0x20]
mov ecx, edi
imul ecx, dword [esp + 0xc]
imul edi, dword [esp + 0x18]
add eax, 0x4000
add eax, edx
add ecx, 0x4000
shr eax, 0xf
mov edx, 0xff
mov dword [esp + 0x10], eax
mov eax, esi
imul eax, dword [esp + 0x2c]
imul esi, dword [esp + 0x34]
lea ebx, [edi + 0x4000]
mov edi, dword [esp + 0x50]
add eax, ecx
mov ecx, dword [esp + 0x3c]
add ecx, dword [esp + 0x40]
add ebx, esi
mov esi, dword [esp + 0x4c]
shr eax, 0xf
mov dword [esp + 0x24], eax
shr ebx, 0xf
cmp ecx, edx
movzx eax, cl
cmovb edx, eax
mov eax, dword [esp + 0x28]
mov byte [edi + eax], dl
jmp 0x594fb4
cmp ebx, 0xff
jae 0x594fb0
imul esi, ebx, 0x101
mov edx, 0x8000
inc esi
shr esi, 1
sub edx, esi
mov ecx, esi
imul ecx, dword [esp + 0x10]
mov eax, edx
imul eax, dword [esp + 0x44]
mov ebx, edx
imul ebx, dword [esp + 0xc]
imul edx, dword [esp + 0x18]
add ecx, 0x4000
add eax, ecx
mov ecx, esi
imul ecx, dword [esp + 0x24]
add ebx, 0x4000
imul esi, dword [esp + 0x38]
shr eax, 0xf
mov dword [esp + 0x10], eax
add ebx, ecx
shr ebx, 0xf
mov dword [esp + 0x24], ebx
lea ebx, [esi + 0x4000]
mov esi, dword [esp + 0x4c]
add ebx, edx
shr ebx, 0xf
jmp 0x594fb4
mov ebx, dword [esp + 0x38]
mov eax, dword [esp + 0x10]
mov byte [esi + edi*4 + 2], al
mov eax, dword [esp + 0x24]
mov byte [esi + edi*4 + 1], al
mov byte [esi + edi*4], bl
jmp 0x592d19
mov edx, dword [esp + 0x28]
mov al, byte [edi + edx]
mov byte [esp + 0x4b], al
test al, al
je 0x592e45
movzx eax, byte [esi + edi*4 + 1]
movzx ecx, byte [esi + edi*4 + 2]
mov edx, dword [esp + 0x20]
mov dword [esp + 0x18], eax
movzx eax, byte [esi + edi*4]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x20]
sub eax, ecx
mov dword [esp + 0x38], ecx
sub ecx, edx
cmp dword [esp + 0x38], edx
mov edx, dword [esp + 0x2c]
cmovbe ecx, eax
mov eax, edx
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x18]
sub eax, ecx
sub ecx, edx
cmp dword [esp + 0x18], edx
mov edx, dword [esp + 0x34]
cmovbe ecx, eax
mov eax, edx
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x24]
sub eax, ecx
sub ecx, edx
cmp dword [esp + 0x24], edx
mov edx, dword [esp + 0x28]
cmovbe ecx, eax
mov al, byte [esp + 0x4b]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x1c]
cmp al, 0xff
jae 0x595180
cmp dword [ecx + 0x34], 0
je 0x595180
movzx eax, al
mov ecx, 0xff
mov dword [esp + 0x58], eax
sub ecx, ebx
imul ecx, eax
mov edi, 0x8000
imul eax, ebx, 0xff
shl ebx, 0xf
add eax, 0x7f
add ecx, eax
mov eax, 0x80808081
mul ecx
mov eax, ebx
mov ecx, edx
xor edx, edx
shr ecx, 7
div ecx
mov edx, dword [esp + 0x3c]
mov esi, eax
mov dword [esp + 0x40], ecx
mov eax, dword [esp + 0xc]
sub edi, esi
imul eax, esi
mov ecx, edi
imul ecx, dword [esp + 0x38]
mov ebx, edi
imul edi, dword [esp + 0x24]
imul ebx, dword [esp + 0x18]
imul edx, esi
add eax, 0x4000
add ecx, eax
mov eax, dword [esp + 0x10]
imul eax, esi
add edi, 0x4000
mov esi, 0x8000
shr ecx, 0xf
add edx, 0x4000
add ebx, edx
xor edx, edx
shr ebx, 0xf
add eax, edi
shr eax, 0xf
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x58]
shl eax, 0xf
div dword [esp + 0x40]
mov edi, eax
sub esi, edi
mov edx, edi
mov eax, esi
imul edx, ecx
imul eax, dword [esp + 0x20]
mov ecx, edi
imul edi, dword [esp + 0x18]
imul ecx, ebx
add eax, 0x4000
add eax, edx
mov edx, dword [esp + 0x28]
shr eax, 0xf
mov dword [esp + 0xc], eax
mov eax, esi
imul eax, dword [esp + 0x2c]
imul esi, dword [esp + 0x34]
add eax, 0x4000
add eax, ecx
shr eax, 0xf
mov dword [esp + 0x3c], eax
lea eax, [edi + 0x4000]
mov edi, dword [esp + 0x50]
add eax, esi
mov esi, dword [esp + 0x4c]
shr eax, 0xf
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x40]
mov byte [edi + edx], al
mov eax, dword [esp + 0x3c]
mov ebx, dword [esp + 0xc]
mov byte [esi + edi*4 + 1], al
mov eax, dword [esp + 0x10]
mov byte [esi + edi*4], al
mov eax, dword [esp + 0x1c]
mov byte [esi + edi*4 + 2], bl
jmp 0x592d21
cmp ebx, 0xff
jae 0x595160
imul edx, ebx, 0x101
mov ecx, 0x8000
mov ebx, dword [esp + 0xc]
inc edx
shr edx, 1
sub ecx, edx
imul ebx, edx
mov eax, ecx
imul eax, dword [esp + 0x38]
add eax, 0x4000
add ebx, eax
mov eax, dword [esp + 0x3c]
imul eax, edx
shr ebx, 0xf
mov dword [esp + 0x3c], eax
mov eax, ecx
imul eax, dword [esp + 0x18]
mov edi, dword [esp + 0x3c]
imul ecx, dword [esp + 0x24]
add edi, 0x4000
add edi, eax
mov eax, edi
mov dword [esp + 0x3c], edi
mov edi, dword [esp + 0x10]
imul edi, edx
shr eax, 0xf
mov edx, edi
mov dword [esp + 0x10], edi
mov edi, dword [esp + 0x50]
add edx, 0x4000
add edx, ecx
shr edx, 0xf
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x28]
jmp 0x595168
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x28]
jmp 0x592d25
mov eax, ecx
jmp 0x592d1d