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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x2a0
mov esi, ecx
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
cmp ecx, eax
jae 0x5922a4
mov byte [esi + 8], 0x13
mov dword [esi + 0x10], edx
mov dword [esi + 0x14], 0
mov dword [esi], 0x80000000
jmp 0x592d61
add edx, eax
sub ecx, eax
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 8
mov dword [esp + 0x40], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x4c], 0
je 0x592abd
pxor xmm0, xmm0
mov dword [esp + 8], eax
mov dword [esp + 0x10], esi
xor ebx, ebx
xor esi, esi
xor edi, edi
xor eax, eax
mov dword [esp + 0xc], edx
mov dword [esp + 0x20], ecx
nop word cs:[eax + eax]
nop dword [eax]
mov ch, byte [edx + ebx]
mov dword [esp + 0x1c], ebx
xor ebx, ebx
cmp eax, 0x3f
jne 0x592317
cmp ch, 2
jae 0x592abf
mov dh, ch
mov dword [esp + 0x24], edi
xor edi, edi
mov cl, al
mov byte [esp + 0x18], ch
and dh, 0x7f
movzx ebx, dh
mov edx, esi
mov esi, 0
shld edi, ebx, cl
shl ebx, cl
test al, 0x20
cmovne edi, ebx
cmovne ebx, esi
mov esi, edx
or dword [esp + 0x24], edi
or esi, ebx
test ch, ch
mov edi, dword [esp + 0x24]
jns 0x592368
mov ebx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0xc]
add eax, 7
inc ebx
cmp ecx, ebx
jne 0x592300
jmp 0x592aca
mov ecx, esi
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x50], esi
or ecx, edi
mov edi, dword [esp + 0x14]
je 0x592b1e
mov eax, dword [esp + 0x1c]
lea ecx, [ebx - 1]
cmp ecx, eax
je 0x592b5e
mov esi, dword [esp + 0xc]
movzx ecx, byte [esi + eax + 1]
mov edx, ecx
and edx, 0x7f
test cl, cl
mov dword [esp + 0x30], edx
lea edx, [ebx - 2]
mov ebx, 0
js 0x5923b3
sub edx, eax
lea esi, [esi + eax + 2]
jmp 0x59242a
cmp edx, eax
je 0x592bae
mov ecx, dword [esp + 0xc]
mov esi, dword [esp + 0x30]
movzx edx, byte [ecx + eax + 2]
movzx esi, si
mov dword [esp + 0x18], edx
and edx, 0x7f
shl edx, 7
or esi, edx
mov edx, ecx
mov ecx, dword [esp + 0x20]
cmp byte [esp + 0x18], 0
mov dword [esp + 0x30], esi
lea esi, [edx + eax + 3]
lea ecx, [ecx - 3]
js 0x5923f5
sub ecx, eax
mov edx, ecx
jmp 0x59242a
cmp ecx, eax
je 0x592d69
movzx ecx, byte [esi]
cmp cx, 3
ja 0x592d7c
lea esi, [edx + eax + 4]
mov edx, dword [esp + 0x20]
sub edx, eax
movzx eax, cx
mov ecx, dword [esp + 0x30]
shl eax, 0xe
add edx, 0xfffffffc
movzx ecx, cx
or ecx, eax
mov dword [esp + 0x30], ecx
cmp word [esp + 0x30], 0
je 0x592b8c
test edx, edx
je 0x592b97
movzx eax, byte [esi]
cmp al, 2
jae 0x592ba6
inc esi
dec edx
mov byte [esp + 0x2f], al
mov dword [esp + 0x7c], 0
mov dword [esp + 0x78], 0
mov dword [esp + 0x80], 0
mov dword [esp + 0x8c], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0x90], 0
mov dword [esp + 0x9c], 0
mov dword [esp + 0x98], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0xac], 0
mov dword [esp + 0xa8], 0
mov dword [esp + 0xb0], 0
movdqa xmmword [esp + 0x60], xmm0
mov dword [esp + 0x70], 0
test edx, edx
je 0x592b16
movzx eax, byte [esi]
mov dword [esp + 8], ecx
lea ecx, [edx - 1]
mov edi, eax
and edi, 0x7f
test al, al
lea eax, [esi + 1]
mov dword [esp + 0x18], edi
jns 0x592536
mov edi, dword [esp + 0x14]
test ecx, ecx
je 0x592af9
movzx eax, byte [esi + 1]
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0x18]
mov ecx, eax
movzx edi, di
and ecx, 0x7f
shl ecx, 7
or edi, ecx
mov ecx, edx
test al, al
lea ecx, [edx - 2]
lea eax, [esi + 2]
mov dword [esp + 0x18], edi
js 0x59278b
mov edi, dword [esp + 0x14]
cmp word [esp + 0x18], 0
mov dword [esp + 0x14], edi
je 0x5927d1
test ecx, ecx
je 0x592af9
movzx ebx, byte [eax]
lea edx, [ecx - 1]
mov edi, ecx
mov ecx, eax
lea esi, [ecx + 1]
mov eax, ebx
and eax, 0x7f
test bl, bl
jns 0x5925d0
test edx, edx
mov dword [esp + 0x1c], edi
je 0x592b47
movzx ebx, byte [ecx + 1]
mov edx, dword [esp + 0x1c]
movzx eax, ax
mov esi, ecx
lea esi, [ecx + 2]
mov edi, ebx
add edx, 0xfffffffe
and edi, 0x7f
shl edi, 7
or eax, edi
test bl, bl
jns 0x5925d0
test edx, edx
je 0x592b47
movzx edi, byte [esi]
cmp di, 3
ja 0x592be9
mov edx, dword [esp + 0x1c]
movzx edi, di
add ecx, 3
movzx eax, ax
shl edi, 0xe
mov esi, ecx
or eax, edi
add edx, 0xfffffffd
nop word cs:[eax + eax]
nop dword [eax + eax]
cmp ax, 0x21
mov dword [esp + 0x20], edx
mov dword [esp + 0xc], esi
je 0x59261b
movzx ebx, ax
test ebx, ebx
je 0x592b7f
movzx eax, word [esp + 0x18]
mov edi, dword [esp + 0x34]
shl ebx, 0x10
mov ecx, 0xffffffff
xor esi, esi
mov dword [esp + 8], 0
mov dword [esp + 0x1c], 0
and edi, ecx
or ebx, eax
xor ecx, ecx
mov dword [esp + 0x18], ebx
jmp 0x59271b
test edx, edx
je 0x592b83
xor ebx, ebx
mov dword [esp + 0x1c], 0
xor eax, eax
xor ecx, ecx
nop word cs:[eax + eax]
nop dword [eax + eax]
mov dh, byte [esi + ebx]
cmp ecx, 0x3f
jne 0x592658
movzx edi, dh
cmp edi, 0x7f
je 0x592658
test edi, edi
jne 0x592af0
mov dword [esp + 8], edx
mov esi, 0
mov edx, dword [esp + 8]
mov dl, dh
and dl, 0x7f
movzx edi, dl
xor edx, edx
shld edx, edi, cl
shl edi, cl
test cl, 0x20
cmovne edx, edi
cmovne edi, esi
or eax, edx
mov edx, dword [esp + 8]
or dword [esp + 0x1c], edi
test dh, dh
jns 0x5926a0
mov edx, dword [esp + 0x20]
mov esi, dword [esp + 0xc]
inc ebx
add ecx, 7
cmp edx, ebx
jne 0x592640
jmp 0x592ae1
add ecx, 7
mov edi, 0xffffffff
cmp ecx, 0x40
setl byte [esp + 0x14]
and dh, 0x40
shl edi, cl
shr dh, 6
test cl, 0x20
mov ecx, 0xffffffff
cmovne ecx, edi
cmovne edi, esi
test byte [esp + 0x14], dh
mov edx, 0xffffffff
cmove ecx, esi
cmove edi, esi
movzx esi, word [esp + 0x18]
or eax, ecx
mov ecx, dword [esp + 0x1c]
or esi, 0x210000
or ecx, edi
mov edi, dword [esp + 0x34]
mov dword [esp + 0x18], esi
mov dword [esp + 0x1c], ecx
shrd ecx, eax, 0x10
shr eax, 0x10
mov esi, eax
mov eax, dword [esp + 0x1c]
and edi, edx
mov edx, dword [esp + 0xc]
mov al, ah
mov dword [esp + 8], eax
lea edx, [edx + ebx + 1]
not ebx
add dword [esp + 0x20], ebx
mov dword [esp + 0xc], edx
mov eax, ecx
mov edx, ecx
movzx ecx, byte [esp + 8]
mov ebx, esi
mov dword [esp + 0x14], esi
mov dword [esp + 0x34], edi
shl eax, 0x10
shld ebx, edx, 0x10
mov dword [esp + 0x28], edx
mov dword [esp + 0x13c], ebx
mov ebx, dword [esp + 0x18]
shl ecx, 8
or ecx, eax
movzx eax, byte [esp + 0x1c]
or eax, ecx
mov dword [esp + 0x138], eax
mov dword [esp + 0x140], ebx
mov dword [esp + 0x144], edi
lea eax, [esp + 0x138]
push eax
lea eax, [esp + 0x64]
push eax
call fcn.00642390
add esp, 8
mov esi, dword [esp + 0xc]
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x20]
jmp 0x5924db
test ecx, ecx
je 0x592bbf
movzx eax, byte [eax]
mov edi, dword [esp + 0x14]
cmp ax, 3
ja 0x592bd5
mov ecx, dword [esp + 0x18]
movzx eax, ax
add esi, 3
add edx, 0xfffffffd
shl eax, 0xe
movzx ecx, cx
or ecx, eax
mov eax, esi
mov dword [esp + 0x18], ecx
mov ecx, edx
cmp word [esp + 0x18], 0
mov dword [esp + 0x14], edi
jne 0x59254a
test ecx, ecx
je 0x592af9
mov dword [esp + 0x18], ebx
movzx ebx, byte [eax]
lea edx, [ecx - 1]
mov esi, ecx
mov ecx, eax
mov eax, ebx
and eax, 0x7f
test bl, bl
lea ebx, [ecx + 1]
mov dword [esp + 0xc], ebx
js 0x5927fd
mov esi, dword [esp + 0x18]
jmp 0x59287c
test edx, edx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], ecx
je 0x592e03
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
movzx eax, ax
movzx ebx, byte [ecx + 1]
add ecx, 2
add edx, 0xfffffffe
mov dword [esp + 0xc], ecx
mov edi, ebx
and edi, 0x7f
shl edi, 7
or eax, edi
test bl, bl
js 0x59283e
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
jmp 0x59287c
mov esi, dword [esp + 0x18]
test edx, edx
je 0x592e1a
mov edi, dword [esp + 0xc]
movzx edi, byte [edi]
cmp di, 3
ja 0x592be9
movzx edi, di
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
movzx eax, ax
shl edi, 0xe
or eax, edi
mov edi, dword [esp + 0x14]
add ecx, 3
add edx, 0xfffffffd
mov dword [esp + 0xc], ecx
mov dword [esp + 0x20], edx
test ax, ax
mov ebx, dword [esp + 0x34]
mov eax, dword [esp + 8]
jne 0x592d8f
lea ecx, [esp + 0x78]
movq xmm1, qword [esp + 0x60]
movdqu xmm0, xmmword [esp + 0x68]
movsd xmm3, qword [ecx + 8]
movsd xmm4, qword [ecx + 0x10]
movsd xmm2, qword [ecx]
movd eax, xmm1
movsd qword [esp + 0x100], xmm3
movsd xmm3, qword [ecx + 0x18]
movsd qword [esp + 0x108], xmm4
movsd xmm4, qword [ecx + 0x20]
cmp eax, 2
movsd qword [esp + 0xf8], xmm2
movsd qword [esp + 0x110], xmm3
movsd xmm3, qword [ecx + 0x28]
movsd qword [esp + 0x118], xmm4
movsd xmm4, qword [ecx + 0x30]
movsd qword [esp + 0x120], xmm3
movsd xmm3, qword [ecx + 0x38]
movsd qword [esp + 0x128], xmm4
movsd qword [esp + 0x130], xmm3
je 0x592da4
movsd xmm3, qword [esp + 0x128]
lea eax, [esp + 0x150]
movsd xmm4, qword [esp + 0x120]
movq xmm2, qword [esp + 0x130]
movsd qword [eax + 0x30], xmm3
movsd xmm3, qword [esp + 0x118]
movsd qword [eax + 0x28], xmm4
movsd xmm4, qword [esp + 0x110]
movq qword [eax + 0x38], xmm2
movsd qword [eax + 0x20], xmm3
movsd xmm3, qword [esp + 0x108]
movsd qword [eax + 0x18], xmm4
movsd xmm4, qword [esp + 0xf8]
movsd qword [eax + 0x10], xmm3
movq xmm3, qword [esp + 0x100]
movsd qword [eax], xmm4
movq qword [eax + 8], xmm3
movq qword [esp + 0x138], xmm1
movdqu xmmword [esp + 0x140], xmm0
movzx eax, byte [esp + 0x2f]
lea ecx, [esp + 0x138]
push ecx
push eax
push dword [esp + 0x38]
push dword [esp + 0x30]
push dword [esp + 0x60]
lea eax, [esp + 0x74]
push eax
call fcn.00642320
add esp, 0x18
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x68]
movq xmm0, qword [esp + 0x60]
lea esi, [esp + 0x78]
mov eax, ecx
mov dword [esp + 0x1c], ecx
movd ebx, xmm0
shld eax, edx, 0x10
mov dword [esp + 0x28], eax
mov eax, ecx
mov ecx, 0x14
shr eax, 0x10
cmp ebx, 3
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x74]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0x24], eax
lea eax, [esp + 0x248]
mov edi, eax
rep movsd dword es:[edi], dword [esi]
je 0x592dd9
mov dword [esp + 8], edx
lea edx, [esp + 0x1f8]
mov ecx, 0x14
mov esi, eax
cmp ebx, 2
mov edi, edx
rep movsd dword es:[edi], dword [esi]
je 0x592b1e
mov eax, dword [esp + 8]
movq qword [esp + 0x190], xmm0
mov ecx, 0x14
lea edi, [esp + 0x1a8]
mov esi, edx
mov dword [esp + 0x198], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x19c], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x1a0], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x1a4], eax
rep movsd dword es:[edi], dword [esi]
lea eax, [esp + 0x190]
push eax
lea eax, [esp + 0x3c]
push eax
call fcn.00641500
add esp, 8
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
test al, al
pxor xmm0, xmm0
jne 0x592dfa
mov ecx, dword [esp + 0x20]
test ecx, ecx
jne 0x5922e2
jmp 0x592ad4
jmp 0x592ad4
mov esi, dword [esp + 0x10]
mov cl, 6
jmp 0x592c30
mov esi, dword [esp + 0x10]
mov ah, byte [esp + 0x18]
add edx, ecx
mov dword [esp + 0xc], edx
mov cl, 0x13
xor ebx, ebx
jmp 0x592c30
add esi, edx
xor ebx, ebx
mov cl, 0x13
mov dword [esp + 0xc], esi
jmp 0x592bf7
xor ebx, ebx
mov cl, 7
jmp 0x592bf3
mov edx, eax
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x10]
xor ebx, ebx
mov cl, 0x13
mov dword [esp + 0xc], edx
mov ah, al
mov dword [esp + 8], eax
jmp 0x592bff
mov ah, cl
xor ebx, ebx
mov cl, 0x13
jmp 0x592b51
movq xmm0, qword [esp + 0x48]
mov eax, dword [esp + 0x10]
movq xmm2, qword [esp + 0x38]
movq xmm1, qword [esp + 0x40]
movq qword [eax + 0x10], xmm0
movq qword [eax + 8], xmm1
movq qword [eax], xmm2
jmp 0x592d61
mov eax, dword [esp + 8]
xor ebx, ebx
mov cl, 0x13
mov ah, al
mov dword [esp + 8], eax
mov dword [esp + 0xc], esi
jmp 0x592bf7
mov ecx, dword [esp + 0xc]
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x28]
xor ebx, ebx
lea ecx, [ecx + eax + 1]
mov eax, dword [esp + 8]
mov dword [esp + 0xc], ecx
mov cl, 0x13
jmp 0x592c30
mov cl, 9
jmp 0x592bed
mov dword [esp + 8], eax
jmp 0x592ae3
mov esi, dword [esp + 0x10]
mov cl, 8
jmp 0x592c28
mov dword [esp + 0xc], esi
mov esi, dword [esp + 0x10]
mov cl, 0x13
jmp 0x592c28
mov esi, dword [esp + 0x10]
mov cl, 0xa
jmp 0x592c28
mov ecx, dword [esp + 0xc]
lea ecx, [ecx + eax + 2]
mov dword [esp + 0xc], ecx
jmp 0x592d71
mov edx, eax
mov eax, dword [esp + 8]
xor ebx, ebx
mov cl, 0x13
mov dword [esp + 0xc], edx
mov ah, al
mov dword [esp + 8], eax
jmp 0x592bf7
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x10]
xor ebx, ebx
mov cl, 6
mov ah, al
mov dword [esp + 8], eax
jmp 0x592bff
xor ebx, ebx
mov cl, 6
mov eax, dword [esp + 8]
mov ah, al
mov dword [esp + 8], eax
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
cmp dword [esp + 0x60], 0
je 0x592c28
mov eax, dword [esp + 0x64]
test eax, eax
je 0x592c28
shl eax, 4
push 8
push eax
push dword [esp + 0x70]
mov dword [esp + 0x30], ecx
call fcn.004ed020
mov ecx, dword [esp + 0x30]
add esp, 0xc
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 8]
movzx eax, ah
movzx ecx, cl
shld edi, edx, 0x10
shl edx, 0x10
shl eax, 8
or ecx, eax
or ecx, edx
mov dword [esi + 8], ecx
mov ecx, dword [esp + 0xc]
mov dword [esi + 0xc], edi
mov dword [esi + 0x14], ebx
mov dword [esi + 0x10], ecx
mov edi, dword [esp + 0x40]
mov dword [esi], 0x80000000
mov esi, dword [esp + 0x3c]
test edi, edi
je 0x592c95
lea ebx, [esi + 8]
jmp 0x592c76
add ebx, 0x68
dec edi
je 0x592c95
cmp dword [ebx - 8], 0
je 0x592c70
mov eax, dword [ebx - 4]
test eax, eax
je 0x592c70
shl eax, 4
push 8
push eax
push dword [ebx]
call fcn.004ed020
add esp, 0xc
jmp 0x592c70
mov eax, dword [esp + 0x38]
test eax, eax
je 0x592cac
imul eax, eax, 0x68
push 8
push eax
push esi
call fcn.004ed020
add esp, 0xc
mov ecx, dword [esp + 0x44]
test ecx, ecx
je 0x592ce3
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x64], 0
mov dword [esp + 0x68], ecx
mov dword [esp + 0x6c], edx
mov dword [esp + 0x74], 0
mov dword [esp + 0x78], ecx
mov ecx, 1
mov dword [esp + 0x7c], edx
jmp 0x592ce7
xor ecx, ecx
xor eax, eax
mov dword [esp + 0x60], ecx
mov dword [esp + 0x70], ecx
mov dword [esp + 0x80], eax
lea ecx, [esp + 0x138]
lea edx, [esp + 0x60]
call fcn.00587340
mov eax, dword [esp + 0x138]
test eax, eax
je 0x592d61
lea esi, [esp + 0x138]
lea edi, [esp + 0x60]
jmp 0x592d34
mov ecx, esi
mov edx, edi
call fcn.00587340
mov eax, dword [esp + 0x138]
test eax, eax
je 0x592d61
imul ecx, dword [esp + 0x140], 0x68
cmp dword [eax + ecx + 0x58], 0
je 0x592d20
lea eax, [eax + ecx + 0x58]
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x592d20
shl ecx, 4
push 8
push ecx
push dword [eax + 8]
call fcn.004ed020
add esp, 0xc
jmp 0x592d20
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
lea edx, [edx + eax + 3]
mov dword [esp + 0xc], edx
mov esi, dword [esp + 0x10]
mov cl, 0x13
jmp 0x592c28
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 8]
mov cl, 6
jmp 0x592c30
mov dword [esp + 0xc], esi
mov esi, dword [esp + 0x10]
mov ah, al
mov cl, 0xd
mov dword [esp + 8], eax
jmp 0x592bff
mov esi, dword [esp + 0x10]
movd ecx, xmm0
pshufd xmm2, xmm0, 0x55
pshufd xmm1, xmm0, 0xee
pshufd xmm3, xmm0, 0xff
movd edi, xmm2
mov edx, ecx
movd dword [esp + 0xc], xmm1
movd ebx, xmm3
mov ah, ch
shrd edx, edi, 0x10
shr edi, 0x10
jmp 0x592c30
mov eax, dword [esp + 0x24]
mov ecx, edx
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov dword [esp + 0xc], eax
mov eax, edx
mov edx, dword [esp + 0x28]
jmp 0x592c30
mov byte [esi + 8], 0xe
jmp 0x592c54
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x10]
xor ebx, ebx
mov cl, 0x13
mov ah, al
mov dword [esp + 8], eax
jmp 0x592bff
mov eax, dword [esp + 8]
xor ebx, ebx
mov cl, 0x13
mov ah, al
mov dword [esp + 8], eax
jmp 0x592bf7