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

Disassembly:
push esi
push edi
push ebx
lea esp, [esp - 0x50]
mov eax, dword [esp + 0x70]
pxor xmm0, xmm0
pshufd xmm0, xmm0, 0
pcmpeqd xmm1, xmm1
movdqu xmm2, xmmword [eax + 2]
pcmpeqw xmm2, xmm0
pxor xmm2, xmm1
pmovmskb eax, xmm2
test eax, eax
jne 0x45a07b
mov ecx, dword [esp + 0x70]
xor edx, edx
movzx eax, word [ecx + edx*2 + 0x12]
test eax, eax
jne 0x45a071
mov eax, edx
inc edx
add eax, 0xa
cmp edx, 7
jb 0x459817
mov ecx, dword [esp + 0x70]
xor edx, edx
mov word [ecx + eax*2 + 0x20], dx
mov edx, eax
inc edx
movzx ecx, word [ecx + eax*2]
cmp edx, 0x10
jge 0x4598ba
mov ebx, edx
neg ebx
add ebx, 0x10
mov edi, ebx
shr edi, 0x1f
add edi, ebx
sar edi, 1
test edi, edi
jbe 0x45a012
add edx, edx
xor esi, esi
add edx, dword [esp + 0x70]
mov dword [esp], eax
movzx eax, word [edx + esi*4]
add ecx, ecx
test eax, eax
je 0x45987a
mov word [edx + esi*4 + 0x20], cx
add ecx, eax
movzx eax, word [edx + esi*4 + 2]
add ecx, ecx
test eax, eax
je 0x45988c
mov word [edx + esi*4 + 0x22], cx
add ecx, eax
inc esi
cmp esi, edi
jb 0x459869
add esi, esi
mov eax, dword [esp]
inc esi
mov edx, esi
dec edx
cmp ebx, edx
jbe 0x4598ba
add ecx, ecx
lea ebx, [esi + eax + 1]
mov eax, dword [esp + 0x70]
movzx edx, word [eax + ebx*2 - 2]
test edx, edx
je 0x4598ba
mov eax, dword [esp + 0x70]
mov word [eax + ebx*2 + 0x1e], cx
cmp dword [esp + 0x68], 0x101
jae 0x4598d1
mov eax, 0xffffff38
lea esp, [esp + 0x50]
pop ebx
pop edi
pop esi
ret
xor eax, eax
mov edx, dword [esp + 0x60]
movzx edx, word [edx + eax*2]
test edx, edx
je 0x4599de
lea edi, [edx + edx]
movzx ebx, word [edi + 0x616858]
inc ebx
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x70]
movzx esi, word [edi + ebx + 0x20]
mov ecx, esi
inc ecx
mov word [ebx + edi + 0x20], cx
mov ecx, esi
shr ecx, 8
and esi, 0xff
movzx ebx, byte [ecx + 0x6166e0]
movzx ecx, byte [esi + 0x6166e0]
shl ecx, 8
or ebx, ecx
mov ecx, edx
mov esi, dword [esp + 0x7c]
neg ecx
add ecx, 0x10
shr ebx, cl
mov ecx, dword [esi + 0x10]
add ecx, ecx
sub ecx, edi
mov edi, eax
shl edi, 8
or edi, edx
mov dword [esp + 0x10], edi
movzx ecx, word [ecx + 0x616858]
inc ecx
mov edx, ecx
shr edx, 1
mov dword [esp + 0x18], edx
test edx, edx
jbe 0x45a01c
mov edi, dword [esp + 0x14]
xor edx, edx
mov dword [esp + 4], ecx
mov ecx, edi
shl ecx, 2
add edi, edi
mov esi, ecx
neg edi
neg esi
mov dword [esp + 0x24], eax
mov eax, ebx
add esi, dword [esp + 0x78]
add eax, ebx
add edi, dword [esp + 0x78]
add esi, ecx
add ecx, edi
add esi, eax
add eax, ecx
mov dword [esp + 8], esi
xor esi, esi
mov dword [esp + 0xc], eax
mov dword [esp], ebx
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
mov ebx, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
inc edx
mov word [ecx + esi*4], bx
mov word [eax + esi*4], bx
lea esi, [esi + edi]
cmp edx, dword [esp + 0x18]
jb 0x4599a4
add edx, edx
mov eax, dword [esp + 0x24]
inc edx
mov ecx, dword [esp + 4]
mov ebx, dword [esp]
dec edx
cmp ecx, edx
jbe 0x4599de
mov ecx, dword [esp + 0x14]
imul ecx, edx
add ebx, ecx
mov esi, dword [esp + 0x78]
mov edx, dword [esp + 0x10]
mov word [esi + ebx*2], dx
inc eax
cmp eax, 0x100
jb 0x4598d3
mov edx, dword [esp + 0x60]
movzx ebx, word [edx + eax*2]
test ebx, ebx
je 0x4598c4
lea edi, [ebx + ebx]
movzx esi, word [edi + 0x616858]
inc esi
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x70]
movzx edx, word [edi + esi + 0x20]
mov ecx, edx
inc ecx
mov word [esi + edi + 0x20], cx
mov ecx, edx
shr ecx, 8
movzx edx, dl
movzx esi, byte [ecx + 0x6166e0]
movzx ecx, byte [edx + 0x6166e0]
shl ecx, 8
or esi, ecx
mov ecx, ebx
mov edx, dword [esp + 0x7c]
neg ecx
add ecx, 0x10
or ebx, 0xffff00f0
shr esi, cl
mov ecx, dword [edx + 0x10]
add ecx, ecx
sub ecx, edi
movzx edi, word [ecx + 0x616858]
mov dword [esp + 0x10], edi
mov edx, edi
inc edx
mov dword [esp + 0x10], edx
shr edx, 1
mov dword [esp + 0x14], edx
test edx, edx
jbe 0x45a026
mov edi, dword [esp + 0x18]
mov ecx, edi
shl ecx, 2
add edi, edi
mov dword [esp + 0xc], ebx
mov ebx, ecx
neg ebx
neg edi
mov dword [esp + 0x24], eax
mov eax, esi
add ebx, dword [esp + 0x78]
add eax, esi
add edi, dword [esp + 0x78]
add ebx, ecx
add ecx, edi
add ebx, eax
add eax, ecx
xor edx, edx
mov dword [esp + 4], ebx
xor ecx, ecx
mov dword [esp + 8], eax
mov dword [esp], esi
mov ebx, dword [esp + 0xc]
mov eax, dword [esp + 8]
mov esi, dword [esp + 4]
mov edi, dword [esp + 0x14]
inc edx
mov word [esi + ecx*4], bx
mov word [eax + ecx*4], bx
add ecx, dword [esp + 0x18]
cmp edx, edi
jb 0x459abb
add edx, edx
mov eax, dword [esp + 0x24]
inc edx
mov esi, dword [esp]
dec edx
cmp edx, dword [esp + 0x10]
jae 0x459aee
mov ecx, dword [esp + 0x18]
imul ecx, edx
add esi, ecx
mov edx, dword [esp + 0x78]
mov word [edx + esi*2], bx
mov edx, eax
mov ebx, eax
mov ecx, dword [esp + 0x68]
neg edx
dec ecx
inc ebx
add ecx, edx
cmp ebx, dword [esp + 0x68]
jae 0x459c3c
add eax, eax
xor edx, edx
mov ebx, dword [esp + 0x60]
add ebx, eax
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x24], eax
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0x1c]
movzx ebx, word [eax + edx*2 + 2]
test ebx, ebx
je 0x459c31
lea edi, [ebx + ebx]
movzx esi, word [edi + 0x616858]
inc esi
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x70]
movzx eax, word [edi + esi + 0x20]
mov ecx, eax
inc ecx
mov word [esi + edi + 0x20], cx
mov ecx, eax
shr ecx, 8
movzx eax, al
movzx esi, byte [ecx + 0x6166e0]
movzx ecx, byte [eax + 0x6166e0]
shl ecx, 8
or esi, ecx
mov ecx, ebx
mov eax, dword [esp + 0x7c]
neg ecx
add ecx, 0x10
shr esi, cl
mov ecx, dword [eax + 0x10]
add ecx, ecx
sub ecx, edi
movzx eax, word [ecx + 0x616858]
mov ecx, dword [esp + 0x24]
movzx edi, byte [ecx + edx*2 + 0x61667b]
shl edi, 8
movzx ecx, byte [ecx + edx*2 + 0x61667a]
or edi, ecx
or edi, ebx
mov dword [esp + 0x10], edi
inc eax
mov ecx, eax
shr ecx, 1
mov dword [esp + 0x20], ecx
test ecx, ecx
jbe 0x45a030
mov ebx, dword [esp + 0x14]
xor ecx, ecx
mov dword [esp + 8], eax
mov eax, ebx
shl eax, 2
add ebx, ebx
mov edi, eax
neg ebx
neg edi
add edi, dword [esp + 0x78]
add ebx, dword [esp + 0x78]
add edi, eax
mov dword [esp + 4], esi
add esi, esi
add eax, ebx
add edi, esi
add esi, eax
xor ebx, ebx
mov dword [esp + 0xc], esi
mov dword [esp], edx
mov eax, dword [esp + 0xc]
mov edx, edi
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
inc ecx
mov word [edx + ebx*4], si
mov word [eax + ebx*4], si
lea ebx, [ebx + edi]
cmp ecx, dword [esp + 0x20]
jb 0x459bf7
add ecx, ecx
mov eax, dword [esp + 8]
inc ecx
mov esi, dword [esp + 4]
mov edx, dword [esp]
dec ecx
cmp eax, ecx
jbe 0x459c31
mov eax, dword [esp + 0x14]
imul eax, ecx
add esi, eax
mov ebx, dword [esp + 0x78]
mov ecx, dword [esp + 0x10]
mov word [ebx + esi*2], cx
inc edx
cmp edx, dword [esp + 0x18]
jb 0x459b1c
mov eax, dword [esp + 0x74]
movdqu xmm2, xmmword [eax + 2]
pcmpeqw xmm0, xmm2
pxor xmm0, xmm1
pmovmskb edx, xmm0
test edx, edx
jne 0x45a063
xor edx, edx
movzx ecx, word [eax + edx*2 + 0x12]
test ecx, ecx
jne 0x45a058
mov ecx, edx
inc edx
add ecx, 0xa
cmp edx, 7
jb 0x459c5b
mov dword [esp], ecx
mov ecx, dword [esp]
xor edx, edx
mov word [eax + ecx*2 + 0x20], dx
mov edx, ecx
inc edx
movzx ecx, word [eax + ecx*2]
cmp edx, 0x10
jge 0x459cf9
mov ebx, edx
neg ebx
add ebx, 0x10
mov edi, ebx
shr edi, 0x1f
add edi, ebx
sar edi, 1
test edi, edi
jbe 0x45a03a
add edx, edx
xor esi, esi
add edx, dword [esp + 0x74]
movzx eax, word [edx + esi*4]
add ecx, ecx
test eax, eax
je 0x459cbd
mov word [edx + esi*4 + 0x20], cx
add ecx, eax
movzx eax, word [edx + esi*4 + 2]
add ecx, ecx
test eax, eax
je 0x459ccf
mov word [edx + esi*4 + 0x22], cx
add ecx, eax
inc esi
cmp esi, edi
jb 0x459cac
add esi, esi
mov eax, dword [esp + 0x74]
inc esi
mov edx, esi
dec edx
cmp ebx, edx
jbe 0x459cf9
mov edx, dword [esp]
add ecx, ecx
lea edx, [esi + edx + 1]
movzx ebx, word [eax + edx*2 - 2]
test ebx, ebx
je 0x459cf9
mov word [eax + edx*2 + 0x1e], cx
mov edx, dword [esp + 0x7c]
mov ebx, 1
mov esi, dword [esp + 0x6c]
mov ecx, dword [edx + 0x10]
shl ebx, cl
add ebx, ebx
add ebx, dword [esp + 0x78]
test esi, esi
jbe 0x459ffa
mov ecx, dword [esp + 0x64]
xor edx, edx
mov dword [esp + 0x14], ebx
mov eax, dword [esp + 0x64]
movzx esi, word [eax + edx*2]
test esi, esi
je 0x459fef
lea edi, [esi + esi]
movzx ebx, word [edi + 0x616858]
mov dword [esp + 0x20], ebx
inc ebx
mov dword [esp + 0x2c], ebx
mov ebx, dword [esp + 0x74]
movzx eax, word [edi + ebx + 0x20]
mov ecx, eax
inc ecx
mov word [ebx + edi + 0x20], cx
mov ecx, eax
shr ecx, 8
movzx eax, al
movzx ebx, byte [ecx + 0x6166e0]
movzx ecx, byte [eax + 0x6166e0]
shl ecx, 8
or ebx, ecx
mov ecx, esi
mov eax, dword [esp + 0x7c]
neg ecx
add ecx, 0x10
shr ebx, cl
mov ecx, dword [eax + 0x14]
add ecx, ecx
sub ecx, edi
movzx edi, word [edx*4 + 0x6167e2]
mov dword [esp + 0x28], edi
movzx eax, word [ecx + 0x616858]
movzx ecx, word [edx*4 + 0x6167e0]
or ecx, esi
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x2c]
inc eax
cmp eax, 6
jle 0x459f1b
mov dword [esp + 8], eax
mov edi, ebx
mov eax, dword [esp + 0x14]
mov esi, eax
sub esi, ecx
mov dword [esp + 0x40], esi
add edi, esi
mov esi, ebx
sub esi, ecx
mov dword [esp + 4], edi
lea eax, [eax + esi*2 + 0x400]
mov dword [esp], eax
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x20]
lea edi, [esi + esi + 2]
mov dword [esp + 0x44], edi
cmp ecx, dword [esp + 0x44]
jg 0x459e13
mov esi, dword [esp + 4]
cmp esi, dword [esp]
jae 0x45a086
mov edi, ecx
imul edi, eax
mov esi, dword [esp]
sub esi, dword [esp + 4]
cmp esi, edi
jge 0x459e38
jmp 0x45a086
jl 0x459f1b
mov esi, dword [esp + 4]
cmp esi, dword [esp]
jbe 0x459f1b
mov edi, dword [esp + 0x44]
imul edi, eax
sub esi, dword [esp]
cmp esi, edi
jl 0x459f1b
mov esi, eax
shr esi, 1
mov dword [esp + 0x4c], esi
test esi, esi
jbe 0x45a044
mov esi, dword [esp + 0x40]
xor edi, edi
add esi, dword [esp + 0x44]
add esi, ebx
mov dword [esp + 0x40], esi
mov esi, ecx
add esi, ecx
neg esi
add esi, dword [esp + 0x14]
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x44]
add esi, edx
add esi, ebx
neg edx
mov dword [esp + 0x38], esi
mov esi, ebx
mov dword [esp + 0x2c], ecx
add esi, ebx
shl ecx, 2
add esi, ecx
neg ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 0x14]
add ecx, eax
add edx, eax
add ecx, esi
mov dword [esp + 0x18], ecx
add edx, esi
mov dword [esp + 0x44], edx
xor esi, esi
mov ecx, dword [esp + 0x18]
mov dword [esp + 0xc], ebx
mov ebx, dword [esp + 0x38]
inc edi
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x28]
mov byte [ebx + esi*2], al
mov ebx, dword [esp + 0x40]
mov word [ecx + esi*4 + 0x400], dx
mov byte [ebx + esi*2], al
mov eax, dword [esp + 0x44]
mov word [eax + esi*4 + 0x400], dx
add esi, dword [esp + 0x2c]
cmp edi, dword [esp + 0x4c]
jb 0x459ea5
add edi, edi
mov eax, dword [esp + 8]
inc edi
mov ebx, dword [esp + 0xc]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x10]
dec edi
cmp eax, edi
jbe 0x459fef
imul ecx, edi
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x24]
lea edi, [esi + ebx]
lea ebx, [ebx + ecx]
mov byte [ecx + edi], al
mov ecx, dword [esp + 0x28]
mov word [esi + ebx*2 + 0x400], cx
jmp 0x459fef
mov edi, eax
shr edi, 1
test edi, edi
jbe 0x45a04e
mov dword [esp + 0x10], edx
xor esi, esi
mov edx, dword [esp + 0x14]
mov dword [esp + 8], eax
mov eax, ecx
mov dword [esp + 0x30], edi
mov edi, edx
add eax, ecx
sub edi, ecx
add edi, eax
add edi, ebx
mov dword [esp + 0x34], edi
mov edi, eax
neg edi
add edi, edx
add edi, eax
neg eax
add edi, ebx
add eax, edx
mov dword [esp + 0x3c], edi
mov edi, ebx
mov dword [esp + 0x2c], ecx
add edi, ebx
shl ecx, 2
add edi, ecx
neg ecx
add ecx, edx
add eax, edi
add ecx, edi
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x48], eax
mov dword [esp + 0xc], ebx
mov ebx, esi
mov ecx, dword [esp + 0x1c]
mov edi, dword [esp + 0x3c]
inc esi
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x28]
mov byte [edi + ebx*2], al
mov edi, dword [esp + 0x34]
mov word [ecx + ebx*4 + 0x400], dx
mov byte [edi + ebx*2], al
mov eax, dword [esp + 0x48]
mov word [eax + ebx*4 + 0x400], dx
add ebx, dword [esp + 0x2c]
cmp esi, dword [esp + 0x30]
jb 0x459f82
add esi, esi
mov eax, dword [esp + 8]
inc esi
mov ebx, dword [esp + 0xc]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x10]
dec esi
cmp eax, esi
jbe 0x459fef
imul ecx, esi
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x24]
lea edi, [esi + ebx]
lea ebx, [ebx + ecx]
mov byte [ecx + edi], al
mov ecx, dword [esp + 0x28]
mov word [esi + ebx*2 + 0x400], cx
inc edx
cmp edx, dword [esp + 0x6c]
jb 0x459d23
mov edx, dword [esp + 0x80]
xor eax, eax
mov dword [edx + 8], 2
lea esp, [esp + 0x50]
pop ebx
pop edi
pop esi
ret
mov esi, 1
jmp 0x459897
mov edx, 1
jmp 0x4599c4
mov edx, 1
jmp 0x459ad6
mov ecx, 1
jmp 0x459c17
mov esi, 1
jmp 0x459cdb
mov edi, 1
jmp 0x459eed
mov esi, 1
jmp 0x459fca
add edx, 9
mov dword [esp], edx
jmp 0x459c76
bsf edx, edx
shr edx, 1
inc edx
mov dword [esp], edx
jmp 0x459c76
mov eax, edx
add eax, 9
jmp 0x45982f
bsf eax, eax
shr eax, 1
inc eax
jmp 0x45982f
cmp ecx, dword [esp + 0x44]
jge 0x459e19
jmp 0x459f1b