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

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
and esp, 0xfffffff0
add esp, 0xffffff80
cmp dword [ebp + 0x10], 0x40
mov edi, dword [ebp + 8]
mov eax, dword [ebp + 0x14]
jg 0x5936d4
mov esi, dword [ebp + 0x10]
mov ebx, dword [ebp + 0x28]
lea edx, [esi + 7]
mov esi, dword [ebp + 0x24]
mov ecx, edx
mov esi, dword [esi]
shr ecx, 3
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x50], esi
mov esi, dword [ebp + 0x24]
mov esi, dword [esi + 4]
test ebx, ebx
je 0x5936e0
mov ebx, ecx
cmp eax, ecx
jb 0x593f30
mov ecx, dword [ebp + 0x10]
and ecx, 7
cmp dword [ebp + 0x10], 0
cmovns edx, dword [ebp + 0x10]
mov dword [esp + 0x44], ecx
lea ecx, [esp + 0x70]
sar edx, 3
mov dword [esp + 0x2c], ecx
add edx, ecx
mov ecx, dword [ebp + 0x10]
mov dword [esp + 0x28], edx
mov edx, dword [ebp + 0x10]
sar edx, 0x1f
shr edx, 0x1d
add ecx, edx
and ecx, 7
sub edx, ecx
add edx, 8
cmp dword [ebp + 0x10], 0x20
mov dword [esp + 0x30], edx
je 0x593560
sub eax, ebx
mov dword [esp + 0x6c], esi
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x68], eax
mov eax, dword [ebp + 0x20]
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0x18]
mov dword [esp + 4], eax
lea eax, [esp + 0x68]
mov dword [esp], eax
mov dword [esp + 0x4c], eax
call fcn.00595980
lea eax, [edi + ebx]
cmp ebx, 8
ja case.0x593555.0
jmp dword [ebx*4 + 0x6b57d0]
sub eax, 4
mov dword [esp + 0x6c], esi
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x68], eax
mov eax, dword [ebp + 0x20]
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0x18]
mov dword [esp + 4], eax
lea eax, [esp + 0x68]
mov dword [esp], eax
mov dword [esp + 0x4c], eax
call fcn.00595980
movzx edx, byte [edi + 3]
movzx ecx, byte [edi + 2]
lea eax, [edi + 4]
mov dword [esp + 0x48], eax
movzx eax, byte [edi]
shl edx, 0x18
shl ecx, 0x10
mov ebx, dword [ebp + 0xc]
mov dword [esp + 0x50], esi
or ecx, edx
movzx edx, byte [edi + 1]
mov esi, dword [esp + 0x48]
add ebx, 4
shl edx, 8
or edx, ecx
or eax, edx
xor eax, dword [esp + 0x68]
movzx ecx, ah
mov edx, eax
mov edi, eax
mov dword [esp + 0x58], ecx
shr edx, 0x10
mov ecx, eax
jmp 0x593659
sub eax, 4
add esi, 4
mov dword [esp + 0x6c], edi
add ebx, 4
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x68], eax
mov eax, dword [ebp + 0x20]
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0x18]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x4c]
mov dword [esp], eax
call fcn.00595980
movzx edx, byte [esi - 1]
movzx eax, byte [esi - 2]
mov dword [esp + 0x50], edi
shl edx, 0x18
shl eax, 0x10
or eax, edx
movzx edx, byte [esi - 3]
shl edx, 8
or edx, eax
movzx eax, byte [esi - 4]
or eax, edx
xor eax, dword [esp + 0x68]
movzx ecx, ah
mov edx, eax
mov edi, eax
mov dword [esp + 0x58], ecx
shr edx, 0x10
mov ecx, eax
mov eax, edi
mov byte [ebx - 2], dl
shr eax, 0x18
mov byte [ebx - 4], cl
mov byte [ebx - 1], al
movzx eax, byte [esp + 0x58]
mov byte [ebx - 3], al
mov eax, dword [esp + 0x5c]
cmp eax, 3
ja 0x5935e8
mov esi, dword [esp + 0x50]
mov ecx, esi
mov edx, esi
mov ebx, esi
mov eax, edi
shr ecx, 0x10
shr edx, 0x18
movzx esi, bl
shl edx, 8
movzx ecx, cl
shr eax, 0x10
or edx, ecx
movzx ecx, bh
movzx eax, al
shl edx, 8
or edx, ecx
mov ecx, edi
shr ecx, 0x18
shl edx, 8
shl ecx, 8
or edx, esi
or ecx, eax
mov eax, edi
movzx eax, ah
shl ecx, 8
or ecx, eax
mov eax, edi
mov edi, ecx
movzx eax, al
shl edi, 8
or edi, eax
mov eax, dword [ebp + 0x24]
mov dword [eax], edx
mov dword [eax + 4], edi
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
cmp eax, ecx
jb 0x593f30
mov ecx, dword [ebp + 0x10]
mov ebx, dword [ebp + 0x10]
sar ecx, 0x1f
shr ecx, 0x1d
add ebx, ecx
and ebx, 7
sub ecx, ebx
add ecx, 8
cmp dword [ebp + 0x10], 0x20
mov dword [esp + 0x3c], ecx
je 0x593780
mov ebx, dword [ebp + 0x10]
mov ecx, dword [ebp + 0x10]
mov dword [esp + 0x6c], esi
and ecx, 7
test ebx, ebx
cmovns edx, dword [ebp + 0x10]
mov dword [esp + 0x38], ecx
lea ecx, [esp + 0x70]
sar edx, 3
mov dword [esp + 0x2c], ecx
lea ebx, [ecx + edx]
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x5c]
sub eax, ebx
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x68], eax
mov eax, dword [ebp + 0x20]
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0x18]
mov dword [esp + 4], eax
lea eax, [esp + 0x68]
mov dword [esp], eax
mov dword [esp + 0x4c], eax
call fcn.00595980
lea eax, [edi + ebx]
mov dword [esp + 0x58], eax
cmp ebx, 8
ja case.0x593778.0
jmp dword [ebx*4 + 0x6b57f4]
sub eax, 4
mov dword [esp + 0x6c], esi
lea ebx, [edi + 4]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x68], eax
mov eax, dword [ebp + 0x20]
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0x18]
mov dword [esp + 4], eax
lea eax, [esp + 0x68]
mov dword [esp], eax
mov dword [esp + 0x4c], eax
call fcn.00595980
movzx ecx, byte [edi + 3]
movzx edx, byte [edi + 2]
movzx eax, byte [edi + 1]
shl ecx, 0x18
shl edx, 0x10
or edx, ecx
movzx ecx, byte [edi]
shl eax, 8
or ecx, edx
mov edx, dword [esp + 0x68]
or eax, ecx
mov edi, eax
xor edx, eax
mov eax, dword [ebp + 0xc]
lea ecx, [eax + 4]
mov eax, esi
mov esi, ecx
mov ecx, eax
jmp 0x59384f
sub eax, 4
add ebx, 4
mov dword [esp + 0x68], ecx
add esi, 4
mov dword [esp + 0x5c], eax
mov eax, dword [ebp + 0x20]
mov dword [esp + 0x6c], edi
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0x18]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x4c]
mov dword [esp], eax
call fcn.00595980
movzx eax, byte [ebx - 1]
movzx edx, byte [ebx - 2]
mov ecx, edi
shl eax, 0x18
shl edx, 0x10
or edx, eax
movzx eax, byte [ebx - 4]
or edx, eax
movzx eax, byte [ebx - 3]
shl eax, 8
or eax, edx
mov edx, dword [esp + 0x68]
mov edi, eax
xor edx, eax
mov eax, edx
mov byte [esi - 3], dh
shr eax, 0x18
mov byte [esi - 4], dl
mov byte [esi - 1], al
mov eax, edx
shr eax, 0x10
mov byte [esi - 2], al
mov eax, dword [esp + 0x5c]
cmp eax, 3
ja 0x5937f0
mov esi, ecx
jmp 0x593680
mov edi, dword [esp + 0x5c]
mov byte [esp + 0x27], 0
xor ebx, ebx
add dword [esp + 0x58], edi
mov edi, esi
mov esi, dword [esp + 0x50]
mov byte [esp + 0x30], 0
mov byte [esp + 0x50], 0
mov byte [esp + 0x28], 0
mov byte [esp + 0x34], 0
mov byte [esp + 0x20], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x1c], 0
mov ecx, esi
mov eax, esi
mov edx, edi
shr ecx, 0x10
shr eax, 0x18
shl eax, 8
movzx ecx, cl
shr edx, 0x10
or eax, ecx
mov ecx, esi
movzx ecx, ch
shl eax, 8
or eax, ecx
mov ecx, esi
movzx esi, dl
movzx ecx, cl
shl eax, 8
or eax, ecx
mov ecx, edi
shr ecx, 0x18
movd xmm0, eax
shl ecx, 8
mov edx, ecx
mov ecx, edi
or edx, esi
movzx ecx, ch
mov esi, dword [esp + 0x1c]
shl edx, 8
or edx, ecx
mov ecx, edi
movzx ecx, cl
shl edx, 8
or edx, ecx
movzx ecx, byte [esp + 0x34]
movd xmm5, edx
shl ecx, 8
punpckldq xmm0, xmm5
or ecx, ebx
movzx ebx, byte [esp + 0x20]
shl ecx, 8
or ecx, ebx
movzx ebx, byte [esp + 0x50]
shl ecx, 8
or ecx, esi
movzx esi, byte [esp + 0x27]
shl ebx, 8
movd xmm1, ecx
or ebx, esi
movzx esi, byte [esp + 0x30]
shl ebx, 8
or ebx, esi
movzx esi, byte [esp + 0x28]
shl ebx, 8
or ebx, esi
mov esi, dword [esp + 0x38]
movd xmm4, ebx
punpckldq xmm1, xmm4
punpcklqdq xmm0, xmm1
movups xmmword [esp + 0x70], xmm0
test esi, esi
jne 0x593db0
mov eax, dword [esp + 0x18]
mov edx, dword [eax + 4]
mov eax, dword [eax]
mov dword [esp + 0x54], edx
mov dword [esp + 0x50], eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], edx
mov esi, dword [esp + 0x70]
mov edi, dword [esp + 0x74]
mov ebx, dword [esp + 0x5c]
mov eax, dword [ebp + 0xc]
mov edx, dword [esp + 0x48]
mov ecx, dword [esp + 0x40]
xor edx, dword [esp + 0x68]
xor ecx, dword [esp + 0x6c]
add eax, ebx
cmp ebx, 8
ja case.0x5939b9.0
jmp dword [ebx*4 + 0x6b5818]
mov ebx, ecx
sub eax, 1
shr ebx, 0x18
mov byte [eax], bl
mov ebx, ecx
sub eax, 1
shr ebx, 0x10
mov byte [eax], bl
mov byte [eax - 1], ch
lea ebx, [eax - 1]
mov eax, ebx
lea ebx, [ebx - 1]
mov byte [eax - 1], cl
mov ecx, edx
lea eax, [ebx - 1]
shr ecx, 0x18
mov byte [ebx - 1], cl
mov ebx, edx
lea ecx, [eax - 1]
shr ebx, 0x10
mov byte [eax - 1], bl
mov byte [ecx - 1], dh
lea eax, [ecx - 1]
mov byte [eax - 1], dl
lea ecx, [eax - 1]
mov eax, dword [esp + 0x5c]
mov edx, eax
add edx, ecx
mov dword [ebp + 0xc], edx
cmp dword [esp + 0x44], eax
jb 0x593680
sub dword [esp + 0x44], eax
mov ebx, eax
mov eax, dword [ebp + 0x20]
mov dword [esp + 0x68], esi
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp + 0x6c], edi
mov dword [esp + 8], eax
mov eax, dword [ebp + 0x18]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x4c]
mov dword [esp], eax
call fcn.00595980
add dword [esp + 0x58], ebx
cmp ebx, 8
ja case.0x593a55.0
jmp dword [ebx*4 + 0x6b583c]
mov edi, esi
mov esi, dword [esp + 0x50]
lea esi, [esi]
mov eax, dword [esp + 0x58]
movzx edx, byte [eax - 1]
sub eax, 1
mov dword [esp + 0x58], eax
shl edx, 0x18
mov ebx, dword [esp + 0x58]
mov dword [esp + 0x50], esi
mov ecx, edi
movzx eax, byte [ebx - 1]
lea esi, [ebx - 1]
mov dword [esp + 0x58], esi
shl eax, 0x10
or eax, edx
mov edi, dword [esp + 0x58]
movzx ebx, byte [edi - 1]
lea edx, [edi - 1]
shl ebx, 8
or eax, ebx
lea edi, [edx - 1]
movzx edx, byte [edx - 1]
mov dword [esp + 0x58], edi
mov edi, edx
or edi, eax
mov esi, dword [esp + 0x58]
movzx edx, byte [esi - 1]
lea eax, [esi - 1]
shl edx, 0x18
lea esi, [eax - 1]
movzx eax, byte [eax - 1]
mov dword [esp + 0x58], esi
mov ebx, esi
shl eax, 0x10
or eax, edx
movzx edx, byte [ebx - 2]
mov dword [esp + 0x40], edi
or eax, edx
movzx edx, byte [ebx - 1]
shl edx, 8
mov esi, edx
or esi, eax
mov eax, dword [esp + 0x5c]
cmp dword [ebp + 0x10], 0x40
lea eax, [ebx + eax - 2]
mov dword [esp + 0x58], eax
je 0x593f20
mov dword [esp + 0x48], esi
mov esi, dword [esp + 0x50]
mov edi, ecx
mov ecx, dword [esp + 0x48]
movzx edx, ch
mov eax, ecx
mov dword [esp + 0x20], edx
mov edx, ecx
mov ecx, dword [esp + 0x40]
shr eax, 0x10
movzx ebx, al
shr edx, 0x18
movzx eax, ch
mov byte [esp + 0x28], cl
mov dword [esp + 0x30], eax
mov eax, ecx
shr ecx, 0x18
shr eax, 0x10
mov dword [esp + 0x34], edx
mov byte [esp + 0x27], al
movzx eax, byte [esp + 0x48]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x1c], eax
jmp 0x5938bb
xor edx, edx
jmp 0x593a7a
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x40], 0
movzx edx, byte [ecx - 1]
movzx eax, byte [ecx - 2]
shl edx, 0x18
shl eax, 0x10
or eax, edx
movzx edx, byte [ecx - 4]
or eax, edx
movzx edx, byte [ecx - 3]
shl edx, 8
or edx, eax
mov dword [esp + 0x48], edx
jmp 0x593b08
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x40], 0
movzx eax, byte [ecx - 1]
movzx edx, byte [ecx - 3]
shl eax, 0x10
or eax, edx
movzx edx, byte [ecx - 2]
shl edx, 8
or eax, edx
mov dword [esp + 0x48], eax
jmp 0x593b08
mov edx, dword [esp + 0x58]
mov dword [esp + 0x40], 0
movzx eax, byte [edx - 1]
movzx ebx, byte [edx - 2]
mov edx, esi
shr edx, 0x10
shl eax, 8
mov ecx, eax
mov dword [esp + 0x50], eax
mov eax, esi
or ecx, ebx
shr eax, 0x18
mov dword [esp + 0x48], ecx
mov ecx, edx
shl eax, 8
mov edx, edi
movzx ecx, cl
shr edx, 0x10
or eax, ecx
mov ecx, esi
movzx ecx, ch
shl eax, 8
or eax, ecx
mov ecx, esi
mov esi, edi
shr esi, 0x18
movzx ecx, cl
shl eax, 8
or eax, ecx
mov ecx, esi
movzx esi, dl
mov edx, ecx
mov ecx, edi
movd xmm0, eax
shl edx, 8
movzx ecx, ch
or edx, esi
shl edx, 8
or edx, ecx
mov ecx, edi
movzx ecx, cl
shl edx, 8
or edx, ecx
mov ecx, dword [esp + 0x50]
movd xmm6, edx
or ecx, ebx
punpckldq xmm0, xmm6
mov ebx, dword [esp + 0x38]
movd xmm1, ecx
punpcklqdq xmm0, xmm1
movups xmmword [esp + 0x70], xmm0
test ebx, ebx
jne 0x593db0
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0x48]
xor edx, dword [esp + 0x68]
mov eax, dword [esi]
mov ecx, dword [esi + 4]
mov dword [esp + 0x70], eax
mov esi, eax
mov eax, dword [ebp + 0xc]
mov edi, ecx
mov dword [esp + 0x74], ecx
lea ecx, [eax + 2]
jmp 0x5939f8
mov eax, dword [esp + 0x58]
mov ecx, esi
mov dword [esp + 0x40], 0
shr ecx, 0x10
movzx ebx, byte [eax - 1]
mov eax, edi
movzx ecx, cl
shr eax, 0x10
mov dword [esp + 0x48], ebx
mov ebx, eax
mov eax, esi
shr eax, 0x18
movzx ebx, bl
shl eax, 8
or eax, ecx
mov ecx, esi
movzx ecx, ch
shl eax, 8
or eax, ecx
mov ecx, esi
movzx ecx, cl
shl eax, 8
or eax, ecx
mov ecx, edi
shr ecx, 0x18
movd xmm0, eax
mov edx, ecx
shl edx, 8
or edx, ebx
mov ebx, edi
movzx ecx, bh
shl edx, 8
or edx, ecx
movzx ecx, bl
mov ebx, dword [esp + 0x48]
shl edx, 8
or edx, ecx
movd xmm1, ebx
movd xmm7, edx
mov edx, dword [esp + 0x38]
punpckldq xmm0, xmm7
punpcklqdq xmm0, xmm1
movups xmmword [esp + 0x70], xmm0
test edx, edx
jne 0x593db0
mov edi, dword [esp + 0x18]
mov edx, dword [esp + 0x68]
mov eax, dword [edi]
mov ecx, dword [edi + 4]
xor edx, ebx
mov dword [esp + 0x70], eax
mov esi, eax
mov eax, dword [ebp + 0xc]
mov edi, ecx
mov dword [esp + 0x74], ecx
add eax, 1
jmp case.0x5939b9.1
mov dword [esp + 0x50], esi
mov ecx, edi
xor eax, eax
jmp 0x593a94
mov ecx, dword [esp + 0x58]
movzx eax, byte [ecx - 1]
movzx edx, byte [ecx - 2]
mov dword [esp + 0x40], eax
movzx eax, byte [ecx - 3]
shl edx, 0x18
shl eax, 0x10
or eax, edx
movzx edx, byte [ecx - 5]
or eax, edx
movzx edx, byte [ecx - 4]
shl edx, 8
or edx, eax
mov dword [esp + 0x48], edx
jmp 0x593b08
mov ebx, eax
jmp 0x5939da
mov ebx, eax
jmp 0x5939e2
mov eax, dword [esp + 0x18]
mov dword [esp + 8], 9
mov dword [esp + 4], eax
mov eax, dword [esp + 0x2c]
mov dword [esp], eax
call sub.msvcrt.dll_memmove
movzx ecx, byte [esp + 0x76]
movzx edi, byte [esp + 0x75]
movzx esi, byte [esp + 0x71]
movzx edx, byte [esp + 0x74]
movzx ebx, byte [esp + 0x72]
movzx eax, byte [esp + 0x73]
mov dword [esp + 0x30], ecx
movzx ecx, byte [esp + 0x77]
mov dword [esp + 0x34], edi
movzx edi, byte [esp + 0x70]
mov dword [esp + 0x50], edx
mov edx, esi
mov dword [esp + 0x28], ecx
movzx ecx, byte [esp + 0x38]
shl edi, cl
movzx ecx, byte [esp + 0x3c]
sar edx, cl
or edi, edx
mov edx, ebx
mov ecx, edi
mov edi, dword [esp + 0x3c]
mov byte [esp + 0x27], cl
movzx ecx, byte [esp + 0x38]
shl esi, cl
mov ecx, edi
sar edx, cl
mov ecx, edx
mov edx, esi
mov esi, dword [esp + 0x38]
or edx, ecx
mov ecx, esi
mov byte [esp + 0x20], dl
mov edx, eax
shl ebx, cl
mov ecx, edi
sar edx, cl
mov ecx, esi
or ebx, edx
mov edx, dword [esp + 0x50]
shl eax, cl
mov ecx, edi
movzx ebx, bl
sar edx, cl
mov ecx, esi
or eax, edx
mov edx, dword [esp + 0x50]
mov byte [esp + 0x1c], al
mov eax, dword [esp + 0x34]
shl edx, cl
movzx ecx, byte [esp + 0x3c]
mov edi, eax
sar edi, cl
mov ecx, esi
or edx, edi
mov edi, eax
shl edi, cl
mov byte [esp + 0x50], dl
movzx ecx, byte [esp + 0x3c]
mov edx, edi
mov edi, dword [esp + 0x30]
mov eax, edi
sar eax, cl
movzx ecx, byte [esp + 0x3c]
or edx, eax
mov eax, dword [esp + 0x28]
mov byte [esp + 0x34], dl
mov edx, eax
sar edx, cl
mov ecx, esi
movzx esi, byte [esp + 0x78]
shl edi, cl
movzx ecx, byte [esp + 0x3c]
or edx, edi
sar esi, cl
movzx ecx, byte [esp + 0x38]
movzx edx, dl
shl eax, cl
mov ecx, eax
movzx eax, byte [esp + 0x1c]
or ecx, esi
movzx esi, byte [esp + 0x34]
shl eax, 8
movzx ecx, cl
or eax, ebx
movzx ebx, byte [esp + 0x20]
shl ecx, 8
shl eax, 8
or ecx, edx
or eax, ebx
movzx ebx, byte [esp + 0x27]
shl eax, 8
shl ecx, 8
mov edi, ecx
movzx ecx, byte [esp + 0x50]
or eax, ebx
or edi, esi
mov dword [esp + 0x70], eax
mov edx, edi
shl edx, 8
or edx, ecx
mov dword [esp + 0x74], edx
jmp 0x59398f
mov ecx, eax
jmp 0x5939f8
mov dword [esp + 0x48], esi
jmp 0x593997
mov edi, esi
mov esi, dword [esp + 0x50]
jmp 0x593680
mov edi, esi
xor edx, edx
mov esi, dword [esp + 0x50]
jmp 0x593a7a
mov ecx, esi
xor eax, eax
jmp 0x593a94
mov edx, dword [esp + 0x58]
mov ecx, esi
xor eax, eax
jmp 0x593aa4
mov ecx, esi
xor edi, edi
jmp 0x593ab3
mov eax, dword [esp + 0x58]
mov ecx, esi
xor edi, edi
xor edx, edx
jmp 0x593ac1
mov ebx, dword [esp + 0x58]
mov ecx, esi
xor edi, edi
xor eax, eax
jmp 0x593ad3
mov eax, dword [esp + 0x58]
mov edi, esi
mov byte [esp + 0x27], 0
xor ebx, ebx
mov esi, dword [esp + 0x50]
mov byte [esp + 0x30], 0
movzx eax, byte [eax - 1]
mov byte [esp + 0x50], 0
mov byte [esp + 0x28], 0
mov dword [esp + 0x1c], eax
mov dword [esp + 0x48], eax
xor eax, eax
mov byte [esp + 0x34], 0
mov byte [esp + 0x20], 0
mov dword [esp + 0x40], eax
jmp 0x5938bb
mov dword [esp + 0x58], eax
mov edi, esi
mov esi, dword [esp + 0x50]
lea esi, [esi]
mov eax, dword [esp + 0x58]
mov dword [esp + 0x50], esi
mov dword [esp + 0x38], edi
movzx edx, byte [eax - 1]
sub eax, 1
mov dword [esp + 0x58], eax
shl edx, 0x18
mov edi, dword [esp + 0x58]
movzx ecx, byte [edi - 1]
lea eax, [edi - 1]
shl ecx, 0x10
or ecx, edx
movzx edx, byte [eax - 1]
lea edi, [eax - 1]
mov dword [esp + 0x58], edi
shl edx, 8
or edx, ecx
movzx ecx, byte [edi - 1]
lea eax, [edi - 1]
or ecx, edx
lea edx, [eax - 1]
movzx eax, byte [eax - 1]
shl eax, 0x18
lea ebx, [edx - 1]
movzx edx, byte [edx - 1]
shl edx, 0x10
or edx, eax
lea eax, [ebx - 1]
movzx ebx, byte [ebx - 1]
shl ebx, 8
or edx, ebx
lea ebx, [eax - 1]
movzx eax, byte [eax - 1]
or eax, edx
mov edx, dword [esp + 0x5c]
xor eax, dword [esp + 0x68]
mov esi, eax
shr eax, 0x10
add dword [ebp + 0xc], edx
lea edi, [ebx + edx]
mov byte [esp + 0x3c], al
mov eax, esi
movzx eax, ah
mov dword [esp + 0x58], edi
mov edi, dword [esp + 0x6c]
mov dword [esp + 0x40], eax
mov eax, esi
mov byte [esp + 0x48], al
xor edi, ecx
cmp edx, 8
ja case.0x594087.0
jmp dword [edx*4 + 0x6b5860]
mov edx, dword [ebp + 0xc]
mov eax, edi
shr eax, 0x18
mov byte [edx - 1], al
mov eax, edx
sub eax, 1
mov dword [ebp + 0xc], eax
mov ecx, dword [ebp + 0xc]
mov edx, edi
mov eax, dword [ebp + 0xc]
shr edx, 0x10
mov byte [ecx - 1], dl
sub eax, 1
lea ebx, [eax - 1]
mov dword [ebp + 0xc], ebx
mov ebx, edi
mov byte [eax - 1], bh
mov edx, dword [ebp + 0xc]
mov ebx, edi
mov eax, dword [ebp + 0xc]
mov byte [edx - 1], bl
sub eax, 1
movzx ebx, byte [esp + 0x3c]
mov ecx, dword [esp + 0x5c]
mov edx, esi
shr edx, 0x18
cmp dword [ebp + 0x10], 0x40
mov byte [eax - 2], bl
movzx ebx, byte [esp + 0x40]
mov byte [eax - 1], dl
mov byte [eax - 3], bl
movzx ebx, byte [esp + 0x48]
mov byte [eax - 4], bl
lea eax, [eax + ecx - 4]
mov dword [ebp + 0xc], eax
jne 0x5941a8
mov eax, dword [esp + 0x34]
mov ebx, dword [esp + 0x5c]
cmp eax, ebx
jb 0x593680
sub eax, ebx
mov dword [esp + 0x68], esi
mov dword [esp + 0x34], eax
mov eax, dword [ebp + 0x20]
mov dword [esp + 0x6c], edi
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0x18]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x4c]
mov dword [esp], eax
call fcn.00595980
add dword [esp + 0x58], ebx
cmp ebx, 8
ja case.0x59414e.0
jmp dword [ebx*4 + 0x6b5884]
mov ebx, dword [esp + 0x58]
add dword [ebp + 0xc], 2
mov dword [esp + 0x50], esi
movzx eax, byte [ebx - 1]
movzx edx, byte [ebx - 2]
mov dword [esp + 0x38], edi
shl eax, 8
or eax, edx
xor eax, dword [esp + 0x68]
mov edx, dword [esp + 0x6c]
mov ecx, eax
movzx ebx, ah
mov byte [esp + 0x48], al
shr ecx, 0x10
mov dword [esp + 0x40], ebx
mov byte [esp + 0x3c], cl
mov edi, dword [ebp + 0xc]
movzx ebx, byte [esp + 0x40]
mov byte [edi - 1], bl
movzx ebx, byte [esp + 0x48]
mov byte [edi - 2], bl
mov esi, eax
mov edi, edx
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x38]
shr esi, 0x18
mov edx, edi
shr edx, 0x10
mov ebx, eax
shr eax, 0x18
shr ebx, 0x10
shl eax, 8
movzx ebx, bl
shr ecx, 0x10
or eax, ebx
mov ebx, dword [esp + 0x50]
shl eax, 8
movzx ebx, bh
or eax, ebx
movzx ebx, byte [esp + 0x50]
shl eax, 8
or eax, ebx
mov ebx, dword [esp + 0x38]
movd xmm0, eax
movzx eax, cl
shr ebx, 0x18
mov ecx, ebx
shl ecx, 8
or ecx, eax
mov eax, dword [esp + 0x38]
shl ecx, 8
movzx ebx, ah
or ecx, ebx
movzx ebx, al
movzx eax, byte [esp + 0x3c]
shl ecx, 8
or ecx, ebx
mov ebx, esi
movzx esi, byte [esp + 0x48]
shl ebx, 8
movd xmm3, ecx
or ebx, eax
movzx eax, byte [esp + 0x40]
punpckldq xmm0, xmm3
shl ebx, 8
or ebx, eax
movzx eax, dl
shl ebx, 8
or ebx, esi
mov esi, edi
shr esi, 0x18
movd xmm1, ebx
shl esi, 8
mov edx, esi
or edx, eax
mov eax, edi
movzx esi, ah
shl edx, 8
or edx, esi
movzx esi, al
shl edx, 8
or edx, esi
mov esi, dword [esp + 0x44]
movd xmm2, edx
punpckldq xmm1, xmm2
punpcklqdq xmm0, xmm1
movups xmmword [esp + 0x70], xmm0
test esi, esi
je 0x594860
mov eax, dword [esp + 0x28]
mov dword [esp + 8], 9
mov dword [esp + 4], eax
mov eax, dword [esp + 0x2c]
mov dword [esp], eax
call sub.msvcrt.dll_memmove
movzx edi, byte [esp + 0x75]
movzx ecx, byte [esp + 0x76]
movzx esi, byte [esp + 0x71]
movzx ebx, byte [esp + 0x72]
movzx eax, byte [esp + 0x73]
movzx edx, byte [esp + 0x74]
mov dword [esp + 0x48], edi
movzx edi, byte [esp + 0x77]
mov dword [esp + 0x50], ecx
movzx ecx, byte [esp + 0x44]
mov dword [esp + 0x40], ebx
mov ebx, esi
mov dword [esp + 0x3c], edi
movzx edi, byte [esp + 0x70]
shl edi, cl
movzx ecx, byte [esp + 0x30]
sar ebx, cl
mov ecx, ebx
mov ebx, edi
or ebx, ecx
movzx ecx, byte [esp + 0x30]
mov byte [esp + 0x38], bl
mov ebx, dword [esp + 0x40]
sar ebx, cl
mov edi, ebx
mov ebx, dword [esp + 0x44]
mov ecx, ebx
shl esi, cl
mov ecx, edi
mov edi, dword [esp + 0x30]
or ecx, esi
mov esi, eax
mov byte [esp + 0x27], cl
mov ecx, edi
sar esi, cl
mov ecx, ebx
mov ebx, dword [esp + 0x40]
shl ebx, cl
mov ecx, edi
or esi, ebx
mov ebx, edx
sar ebx, cl
movzx ecx, byte [esp + 0x44]
shl eax, cl
mov ecx, edi
or eax, ebx
mov ebx, dword [esp + 0x48]
movzx eax, al
sar ebx, cl
movzx ecx, byte [esp + 0x44]
shl eax, 8
shl edx, cl
mov ecx, edi
or ebx, edx
mov edx, dword [esp + 0x50]
mov byte [esp + 0x40], bl
mov ebx, edi
mov edi, dword [esp + 0x48]
sar edx, cl
movzx ecx, byte [esp + 0x44]
shl edi, cl
mov ecx, ebx
or edx, edi
mov edi, dword [esp + 0x3c]
mov byte [esp + 0x48], dl
mov edx, edi
sar edx, cl
movzx ecx, byte [esp + 0x44]
mov ebx, edx
mov edx, dword [esp + 0x50]
shl edx, cl
or ebx, edx
movzx edx, byte [esp + 0x78]
movzx ecx, byte [esp + 0x30]
movzx ebx, bl
sar edx, cl
movzx ecx, byte [esp + 0x44]
shl edi, cl
mov ecx, edi
or ecx, edx
mov edx, esi
movzx esi, dl
movzx ecx, cl
or eax, esi
movzx esi, byte [esp + 0x27]
shl ecx, 8
shl eax, 8
or ecx, ebx
movzx ebx, byte [esp + 0x48]
mov edi, eax
or edi, esi
movzx esi, byte [esp + 0x38]
mov edx, edi
movzx edi, byte [esp + 0x40]
shl edx, 8
shl ecx, 8
mov eax, ecx
or edx, esi
or eax, ebx
mov dword [esp + 0x70], edx
shl eax, 8
or eax, edi
mov dword [esp + 0x74], eax
mov esi, dword [esp + 0x70]
mov edi, dword [esp + 0x74]
jmp 0x594102
mov eax, dword [ebp + 0xc]
jmp 0x5940b4
mov dword [esp + 0x50], esi
xor edx, edx
mov dword [esp + 0x38], edi
jmp 0x593ffa
mov dword [esp + 0x50], esi
mov eax, dword [esp + 0x58]
xor ecx, ecx
mov dword [esp + 0x38], edi
jmp 0x59400a
mov dword [esp + 0x38], edi
xor edx, edx
mov edi, dword [esp + 0x58]
mov dword [esp + 0x50], esi
jmp 0x59401a
mov ebx, dword [esp + 0x58]
mov dword [esp + 0x50], esi
mov dword [esp + 0x38], edi
mov edi, dword [esp + 0x6c]
movzx eax, byte [ebx - 1]
movzx edx, byte [ebx - 2]
shl eax, 0x18
shl edx, 0x10
or edx, eax
movzx eax, byte [ebx - 3]
shl eax, 8
or eax, edx
movzx edx, byte [ebx - 4]
or edx, eax
xor edx, dword [esp + 0x68]
mov eax, dword [ebp + 0xc]
mov ecx, edx
movzx ebx, dh
mov byte [esp + 0x48], dl
mov esi, edx
shr ecx, 0x10
mov dword [esp + 0x40], ebx
add eax, 4
mov byte [esp + 0x3c], cl
jmp 0x5940cd
mov eax, dword [esp + 0x58]
add dword [ebp + 0xc], 1
mov dword [esp + 0x50], esi
mov edx, dword [esp + 0x6c]
movzx eax, byte [eax - 1]
xor eax, dword [esp + 0x68]
mov dword [esp + 0x38], edi
mov ecx, eax
mov byte [esp + 0x48], al
movzx ebx, ah
shr ecx, 0x10
mov dword [esp + 0x40], ebx
mov ebx, eax
mov byte [esp + 0x3c], cl
mov esi, dword [ebp + 0xc]
mov byte [esi - 1], bl
jmp 0x5941a4
mov ebx, dword [esp + 0x58]
add dword [ebp + 0xc], 3
movzx edx, byte [ebx - 1]
movzx eax, byte [ebx - 2]
shl edx, 0x10
shl eax, 8
or eax, edx
movzx edx, byte [ebx - 3]
or edx, eax
mov eax, dword [esp + 0x6c]
xor edx, dword [esp + 0x68]
mov byte [esp + 0x48], dl
mov ebx, edx
mov dword [esp + 0x50], eax
mov eax, edx
shr eax, 0x10
mov byte [esp + 0x3c], al
movzx eax, dh
mov dword [esp + 0x40], eax
mov edx, dword [ebp + 0xc]
movzx eax, byte [esp + 0x3c]
movzx ecx, byte [esp + 0x40]
mov byte [edx - 1], al
mov eax, edx
mov byte [edx - 2], cl
movzx edx, byte [esp + 0x48]
mov ecx, edi
shr ecx, 0x10
mov byte [eax - 3], dl
mov eax, dword [esp + 0x50]
mov edx, esi
movzx ecx, cl
shr edx, 0x10
shr eax, 0x10
movzx edx, dl
mov dword [esp + 0x38], eax
mov eax, esi
shr eax, 0x18
shl eax, 8
or eax, edx
mov edx, esi
movzx edx, dh
shl eax, 8
or eax, edx
mov edx, esi
shl eax, 8
movzx edx, dl
mov esi, eax
mov eax, dword [esp + 0x50]
or esi, edx
movd xmm7, esi
mov esi, edi
shr esi, 0x18
movdqa xmm0, xmm7
mov edx, esi
movzx esi, byte [esp + 0x38]
shl edx, 8
or edx, ecx
mov ecx, edi
movzx ecx, ch
shl edx, 8
or edx, ecx
mov ecx, edi
mov edi, ebx
movzx ebx, byte [esp + 0x3c]
shr edi, 0x18
movzx ecx, cl
shl edx, 8
or edx, ecx
mov ecx, edi
mov edi, dword [esp + 0x44]
shl ecx, 8
movd xmm7, edx
or ecx, ebx
movzx ebx, byte [esp + 0x40]
punpckldq xmm0, xmm7
shl ecx, 8
or ecx, ebx
movzx ebx, byte [esp + 0x48]
shl ecx, 8
or ecx, ebx
mov ebx, eax
shr ebx, 0x18
movd xmm1, ecx
shl ebx, 8
or ebx, esi
movzx esi, ah
shl ebx, 8
or ebx, esi
movzx esi, al
shl ebx, 8
or ebx, esi
movd xmm6, ebx
punpckldq xmm1, xmm6
punpcklqdq xmm0, xmm1
movups xmmword [esp + 0x70], xmm0
test edi, edi
je 0x594860
mov eax, dword [esp + 0x28]
mov dword [esp + 8], 9
mov dword [esp + 4], eax
mov eax, dword [esp + 0x2c]
mov dword [esp], eax
call sub.msvcrt.dll_memmove
movzx eax, byte [esp + 0x74]
movzx ecx, byte [esp + 0x76]
mov dword [esp + 0x44], edi
movzx edx, byte [esp + 0x71]
movzx ebx, byte [esp + 0x72]
mov dword [esp + 0x50], eax
movzx eax, byte [esp + 0x75]
mov dword [esp + 0x40], ecx
movzx ecx, byte [esp + 0x77]
mov dword [esp + 0x48], eax
movzx eax, byte [esp + 0x70]
mov dword [esp + 0x3c], ecx
mov ecx, edi
mov edi, edx
movzx esi, byte [esp + 0x73]
shl eax, cl
movzx ecx, byte [esp + 0x30]
sar edi, cl
mov ecx, edi
mov edi, eax
or edi, ecx
movzx ecx, byte [esp + 0x44]
mov eax, edi
mov edi, ebx
shl edx, cl
movzx ecx, byte [esp + 0x30]
mov byte [esp + 0x38], al
sar edi, cl
mov eax, edi
mov edi, edx
mov edx, dword [esp + 0x44]
or edi, eax
mov ecx, edi
mov edi, esi
mov byte [esp + 0x27], cl
mov ecx, edx
shl ebx, cl
movzx ecx, byte [esp + 0x30]
sar edi, cl
mov ecx, ebx
mov ebx, edx
or ecx, edi
mov edi, dword [esp + 0x50]
mov byte [esp + 0x20], cl
mov ecx, edx
shl esi, cl
movzx ecx, byte [esp + 0x30]
mov edx, esi
mov esi, ebx
sar edi, cl
mov ecx, ebx
mov ebx, dword [esp + 0x48]
or edx, edi
mov edi, dword [esp + 0x50]
mov eax, ebx
mov byte [esp + 0x1c], dl
shl edi, cl
movzx ecx, byte [esp + 0x30]
sar eax, cl
mov ecx, esi
or edi, eax
mov eax, edi
mov edi, esi
mov esi, dword [esp + 0x30]
mov byte [esp + 0x50], al
mov eax, ebx
mov ebx, dword [esp + 0x40]
shl eax, cl
mov ecx, esi
mov edx, ebx
sar edx, cl
mov ecx, edi
or eax, edx
mov edx, ebx
shl edx, cl
mov byte [esp + 0x48], al
mov ecx, esi
mov eax, edx
mov edx, dword [esp + 0x3c]
mov ebx, edx
mov esi, edx
sar ebx, cl
or eax, ebx
mov ebx, eax
movzx eax, byte [esp + 0x78]
movzx edx, byte [esp + 0x20]
sar eax, cl
mov ecx, edi
shl esi, cl
mov ecx, esi
movzx esi, byte [esp + 0x38]
or ecx, eax
movzx eax, byte [esp + 0x1c]
shl eax, 8
or eax, edx
movzx edx, byte [esp + 0x27]
shl eax, 8
or eax, edx
movzx edx, bl
mov edi, eax
movzx eax, cl
shl eax, 8
shl edi, 8
or eax, edx
movzx edx, byte [esp + 0x48]
shl eax, 8
or edi, esi
or eax, edx
movzx edx, byte [esp + 0x50]
mov dword [esp + 0x70], edi
mov ecx, edi
shl eax, 8
mov dword [esp + 0x50], edi
mov edi, dword [esp + 0x34]
or eax, edx
mov dword [esp + 0x74], eax
mov esi, dword [esp + 0x74]
mov dword [esp + 0x38], esi
cmp edi, 2
jbe 0x593f30
mov eax, dword [ebp + 0x20]
sub edi, 3
mov dword [esp + 0x68], ecx
mov dword [esp + 0x34], edi
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp + 0x6c], esi
mov dword [esp + 8], eax
mov eax, dword [ebp + 0x18]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x4c]
mov dword [esp], eax
call fcn.00595980
mov edx, dword [esp + 0x58]
xor ecx, ecx
xor eax, eax
add edx, 3
jmp 0x59402d
mov eax, esi
mov edx, edi
jmp 0x594191
movzx ebx, byte [esp + 0x48]
mov eax, esi
mov edx, edi
jmp 0x5944ba
mov ebx, esi
mov esi, dword [esp + 0x50]
mov dword [esp + 0x50], edi
mov edi, dword [esp + 0x38]
jmp 0x594508
mov dword [esp + 0x38], esi
xor edx, edx
mov dword [esp + 0x58], eax
jmp 0x593ffa
mov dword [esp + 0x38], esi
xor ecx, ecx
jmp 0x59400a
mov dword [esp + 0x38], esi
xor edx, edx
mov edi, eax
mov dword [esp + 0x58], eax
jmp 0x59401a
mov dword [esp + 0x38], esi
xor ecx, ecx
jmp 0x594023
mov dword [esp + 0x38], esi
mov ebx, eax
xor ecx, ecx
xor edx, edx
jmp 0x594039
mov dword [esp + 0x38], esi
xor ecx, ecx
xor edx, edx
jmp 0x594045
mov edx, eax
mov dword [esp + 0x38], esi
xor ecx, ecx
xor eax, eax
jmp 0x59402d
mov eax, dword [esp + 0x28]
mov edx, dword [eax + 4]
mov eax, dword [eax]
mov dword [esp + 0x54], edx
mov dword [esp + 0x50], eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], edx
jmp 0x5943d0
mov edx, dword [esp + 0x68]
mov ebx, dword [esp + 0x5c]
mov dword [esp + 0x38], edi
add dword [esp + 0x58], ebx
mov edi, dword [esp + 0x6c]
mov eax, edx
add dword [ebp + 0xc], ebx
shr eax, 0x10
mov byte [esp + 0x48], dl
mov byte [esp + 0x3c], al
movzx eax, dh
mov dword [esp + 0x40], eax
mov dword [esp + 0x50], esi
mov esi, edx
mov eax, dword [esp + 0x5c]
add dword [ebp + 0xc], eax
jmp 0x5941a8
mov ebx, eax
mov dword [esp + 0x38], esi
xor ecx, ecx
xor eax, eax
jmp 0x59404e
mov eax, dword [ebp + 0xc]
jmp 0x5940cd
mov eax, dword [esp + 0x5c]
lea ebx, [eax + eax]
mov eax, edi
mov edx, dword [esp + 0x5c]
mov ecx, esi
add dword [esp + 0x58], edx
shr eax, 0x10
shr ecx, 0x10
mov edx, eax
mov eax, esi
movzx ecx, cl
shr eax, 0x18
shl eax, 8
or eax, ecx
mov ecx, esi
movzx ecx, ch
shl eax, 8
or eax, ecx
mov ecx, esi
movzx esi, cl
mov ecx, edi
shl eax, 8
shr ecx, 0x18
or eax, esi
movzx esi, dl
shl ecx, 8
movd xmm0, eax
mov edx, ecx
mov ecx, edi
or edx, esi
movzx ecx, ch
shl edx, 8
or edx, ecx
mov ecx, edi
movzx edi, cl
shl edx, 8
xor ecx, ecx
or edx, edi
cmp dword [esp + 0x38], 0
mov dword [esp + 0x40], ecx
movd xmm6, edx
mov dword [esp + 0x48], ecx
punpckldq xmm0, xmm6
movq xmm0, xmm0
movups xmmword [esp + 0x70], xmm0
jne 0x593db0
mov esi, dword [esp + 0x18]
add dword [ebp + 0xc], ebx
mov edx, dword [esi + 4]
mov eax, dword [esi]
mov edi, edx
mov dword [esp + 0x74], edx
mov esi, eax
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x70], eax
cmp dword [esp + 0x44], edx
jb 0x593680
mov dword [esp + 0x68], eax
mov eax, dword [ebp + 0x20]
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x6c], edi
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x1c]
sub dword [esp + 0x44], edx
mov dword [esp + 8], eax
mov eax, dword [ebp + 0x18]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x4c]
mov dword [esp], eax
call fcn.00595980
mov edx, dword [esp + 0x5c]
add dword [esp + 0x58], edx
jmp 0x5948d9
mov ecx, eax
jmp 0x593a04