Function at 0x598063a8
Capabilities:
Access peb ldr_data

Disassembly:
lea ecx, [esp + 4]
and esp, 0xfffffff0
push dword [ecx - 4]
push ebp
mov ebp, esp
push edi
push esi
push ebx
push ecx
sub esp, 0x88
mov eax, dword [0x59857a3d]
mov dword [ebp - 0x3c], eax
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov ebx, dword [eax + 0xc]
lea edi, [eax + 0xc]
cmp edi, ebx
je 0x59806427
mov edx, dword [ebx + 0x30]
movzx eax, word [edx]
test ax, ax
je 0x598069e8
add edx, 2
xor ecx, ecx
lea esi, [esi]
lea esi, [esi]
lea esi, [eax - 0x41]
cmp si, 0x19
ja 0x59806407
add eax, 0x20
movzx eax, ax
add edx, 2
add ecx, eax
movzx eax, word [edx - 2]
test ax, ax
jne 0x598063f8
lea eax, [ecx + ecx*2]
cmp dword [ebp - 0x3c], eax
je 0x598069f8
mov ebx, dword [ebx]
cmp edi, ebx
jne 0x598063da
mov dword [ebp - 0x40], 0
mov ecx, dword [0x59857a2d]
mov esi, dword [ebp - 0x40]
mov edx, dword [0x59857a59]
mov eax, dword [0x59857a39]
mov dword [esp + 0xc], ecx
mov dword [esp], esi
mov dword [esp + 8], edx
mov dword [esp + 4], eax
call fcn.598062e8
mov dword [esp], 0
mov dword [ebp - 0x54], eax
mov eax, dword [0x59857a35]
mov dword [esp + 4], eax
call dword [sym.imp.kernel32.dll_LocalAlloc]
mov ecx, dword [0x59857a2d]
mov edi, eax
mov edx, dword [0x59857a59]
mov dword [ebp - 0x3c], eax
sub esp, 8
mov eax, dword [0x59857a31]
mov dword [esp], esi
mov dword [esp + 0xc], ecx
mov dword [esp + 8], edx
mov dword [esp + 4], eax
call fcn.598062e8
mov dword [esp + 8], 0x104
mov dword [esp + 4], edi
mov dword [esp], 0
call eax
mov ecx, dword [0x59857a11]
sub esp, 0xc
mov edx, dword [0x59857a51]
cmp word [edi + eax*2 - 2], dx
je 0x598064e0
mov edx, dword [ebp - 0x3c]
xor ebx, ebx
mov word [edx + eax*2], bx
sub eax, 1
mov ebx, dword [0x59857a51]
cmp word [edx + eax*2 - 2], bx
jne 0x598064ca
movsx dx, byte [ecx]
add ecx, 1
mov edi, dword [ebp - 0x3c]
lea eax, [edi + eax*2]
test dl, dl
je 0x59806509
lea esi, [esi]
mov word [eax], dx
movsx dx, byte [ecx]
add eax, 2
add ecx, 1
test dl, dl
jne 0x598064f8
mov ecx, dword [0x59857a2d]
mov edi, dword [ebp - 0x40]
mov edx, dword [0x59857a59]
mov eax, dword [0x59857a55]
mov dword [esp + 0xc], ecx
mov dword [esp], edi
mov dword [esp + 8], edx
mov dword [esp + 4], eax
call fcn.598062e8
dec dword [ebx + 0x44c7c475]
and al, 0x18
add byte [eax], al
add byte [eax], al
mov ebx, dword [0x59857a25]
mov dword [esp + 0xc], 0
mov ecx, dword [0x59857a29]
mov dword [esp + 8], 1
mov edx, dword [0x59857a41]
mov dword [esp], esi
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], ecx
mov dword [esp + 4], edx
call eax
mov ecx, dword [0x59857a2d]
mov ebx, eax
mov edx, dword [0x59857a59]
sub esp, 0x1c
mov eax, dword [0x59857a5d]
mov dword [esp], edi
mov dword [esp + 0xc], ecx
mov dword [esp + 8], edx
mov dword [esp + 4], eax
call fcn.598062e8
mov dword [esp + 4], 0
mov dword [esp], ebx
call eax
mov esi, eax
mov eax, dword [0x59857a2d]
sub esp, 8
cmp eax, esi
jne 0x598065c3
mov dword [esp], 2
mov eax, dword [ebp - 0x54]
call eax
sub esp, 4
mov ecx, dword [0x59857a2d]
mov edx, dword [0x59857a59]
mov eax, dword [0x59857a1d]
mov dword [esp + 0xc], ecx
mov dword [esp + 8], edx
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x40]
mov dword [esp], eax
call fcn.598062e8
mov edi, dword [ebp - 0x3c]
lea edx, [ebp - 0x2c]
mov dword [esp + 8], esi
mov dword [ebp - 0x2c], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], edx
mov dword [esp + 4], edi
mov dword [esp], ebx
call eax
sub esp, 0x14
test eax, eax
je 0x59806a08
mov eax, dword [ebp - 0x3c]
mov edi, dword [ebp - 0x2c]
add edi, eax
mov dword [ebp - 0x44], edi
mov edi, dword [0x59857a19]
add eax, edi
mov dword [ebp - 0x6c], edi
mov ebx, dword [eax]
mov edi, eax
mov eax, dword [eax + 4]
lea ecx, [edi + 8]
mov dword [ebp - 0x48], eax
test ebx, ebx
je 0x598066a3
lea eax, [ebx - 1]
cmp eax, 2
jbe 0x59806ab0
mov esi, ebx
movd xmm3, dword [ebp - 0x48]
mov eax, ecx
xor edx, edx
shr esi, 2
pshufd xmm1, xmm3, 0
lea esi, [esi]
movdqu xmm0, xmmword [eax]
add edx, 1
add eax, 0x10
paddd xmm0, xmm1
movups xmmword [eax - 0x10], xmm0
cmp esi, edx
jne 0x59806668
mov eax, ebx
and eax, 0xfffffffc
lea ecx, [ecx + eax*4]
cmp ebx, eax
je 0x598066a3
lea edx, [eax + 1]
mov esi, dword [ebp - 0x48]
add dword [ecx], esi
cmp ebx, edx
jbe 0x598066a3
add dword [ecx + 4], esi
add eax, 2
cmp ebx, eax
jbe 0x598066a3
add dword [ecx + 8], esi
mov eax, dword [0x59857a49]
lea ebx, [edi + eax]
mov dword [ebp - 0x70], eax
mov eax, dword [0x59857a2d]
cmp byte [ebx + 1], 0
mov dword [ebp - 0x48], eax
mov eax, dword [0x59857a59]
mov edi, dword [0x59857a59]
mov dword [ebp - 0x4c], eax
lea eax, [ebx + 1]
je 0x59806a98
xor edx, edx
lea esi, [esi]
nop
add edx, 1
cmp byte [ebx + edx + 1], 0
jne 0x598066d8
add edx, eax
xor ecx, ecx
nop
movzx esi, byte [eax]
imul ecx, edi
add eax, 1
add ecx, esi
cmp eax, edx
jne 0x598066e8
mov eax, dword [ebp - 0x48]
mov dword [esp + 4], ecx
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x4c]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x40]
mov dword [esp], eax
call fcn.598062e8
mov dword [ebp - 0x58], eax
test eax, eax
je 0x59806a4c
movsx eax, byte [ebx]
add ebx, eax
mov dword [ebp - 0x4c], eax
mov eax, dword [0x59857a2d]
cmp byte [ebx + 1], 0
mov dword [ebp - 0x48], eax
mov eax, dword [0x59857a59]
mov edi, dword [0x59857a59]
mov dword [ebp - 0x50], eax
lea eax, [ebx + 1]
je 0x59806a8d
xor edx, edx
add edx, 1
cmp byte [ebx + edx + 1], 0
jne 0x5980674c
add edx, eax
xor ecx, ecx
movzx esi, byte [eax]
imul ecx, edi
add eax, 1
add ecx, esi
cmp eax, edx
jne 0x5980675a
mov eax, dword [ebp - 0x48]
mov dword [esp + 4], ecx
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x50]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x40]
mov dword [esp], eax
call fcn.598062e8
mov dword [ebp - 0x48], eax
test eax, eax
je 0x59806a38
movsx eax, byte [ebx]
add ebx, eax
mov dword [ebp - 0x50], eax
lea eax, [ebx + 1]
mov dword [esp], eax
mov eax, dword [ebp - 0x58]
call eax
sub esp, 4
mov edi, eax
test eax, eax
je 0x59806a1c
movsx eax, byte [ebx]
lea edx, [ebp - 0x28]
mov dword [ebp - 0x28], 0
mov ecx, dword [0x59857a15]
mov dword [ebp - 0x54], eax
add eax, ebx
mov ebx, dword [eax + 4]
lea esi, [eax + ecx]
mov dword [ebp - 0x64], ecx
mov dword [ebp - 0x5c], ebx
mov ebx, dword [eax + 8]
lea eax, [esi + ebx]
mov dword [ebp - 0x60], eax
mov eax, dword [edi + 0x3c]
mov eax, dword [edi + eax + 0x2c]
mov dword [esp + 0xc], edx
mov dword [esp + 4], ebx
mov dword [ebp - 0x68], eax
add eax, edi
mov ecx, eax
mov dword [ebp - 0x40], eax
mov eax, dword [0x59857a4d]
mov dword [esp], ecx
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x48]
call eax
lea eax, [ebx - 1]
mov ecx, dword [ebp - 0x64]
sub esp, 0x10
test ebx, ebx
mov dword [ebp - 0x58], eax
je 0x5980695b
mov edx, dword [ebp - 0x6c]
add edx, dword [ebp - 0x70]
lea eax, [ecx + edx]
add eax, dword [ebp - 0x4c]
add eax, dword [ebp - 0x50]
add eax, dword [ebp - 0x54]
add eax, dword [ebp - 0x3c]
lea edx, [ecx + edx + 0x10]
mov ecx, dword [ebp - 0x68]
add edx, dword [ebp - 0x4c]
add edx, dword [ebp - 0x50]
add edx, dword [ebp - 0x54]
add edx, dword [ebp - 0x3c]
cmp dword [ebp - 0x40], edx
lea ecx, [edi + ecx + 0x10]
setae dl
cmp eax, ecx
setae cl
or dl, cl
je 0x59806a68
cmp dword [ebp - 0x58], 0xe
jbe 0x59806a68
mov edi, dword [ebp - 0x40]
mov ecx, ebx
and ecx, 0xfffffff0
mov edx, edi
add ecx, edi
lea esi, [esi]
movdqu xmm2, xmmword [eax]
add edx, 0x10
add eax, 0x10
movups xmmword [edx - 0x10], xmm2
cmp edx, ecx
jne 0x59806878
mov ecx, dword [ebp - 0x58]
mov edx, ebx
mov eax, dword [ebp - 0x40]
and edx, 0xfffffff0
add esi, edx
sub ecx, edx
add eax, edx
cmp ebx, edx
je 0x5980695b
movzx edx, byte [esi]
mov byte [eax], dl
test ecx, ecx
je 0x5980695b
movzx edx, byte [esi + 1]
mov byte [eax + 1], dl
cmp ecx, 1
je 0x5980695b
movzx edx, byte [esi + 2]
mov byte [eax + 2], dl
cmp ecx, 2
je 0x5980695b
movzx edx, byte [esi + 3]
mov byte [eax + 3], dl
cmp ecx, 3
je 0x5980695b
movzx edx, byte [esi + 4]
mov byte [eax + 4], dl
cmp ecx, 4
je 0x5980695b
movzx edx, byte [esi + 5]
mov byte [eax + 5], dl
cmp ecx, 5
stc
invalid
je 0x5980695b
movzx edx, byte [esi + 6]
mov byte [eax + 6], dl
cmp ecx, 6
je 0x5980695b
movzx edx, byte [esi + 7]
mov byte [eax + 7], dl
cmp ecx, 7
je 0x5980695b
movzx edx, byte [esi + 8]
mov byte [eax + 8], dl
cmp ecx, 8
je 0x5980695b
movzx edx, byte [esi + 9]
mov byte [eax + 9], dl
cmp ecx, 9
je 0x5980695b
movzx edx, byte [esi + 0xa]
mov byte [eax + 0xa], dl
cmp ecx, 0xa
je 0x5980695b
movzx edx, byte [esi + 0xb]
mov byte [eax + 0xb], dl
cmp ecx, 0xb
je 0x5980695b
movzx edx, byte [esi + 0xc]
mov byte [eax + 0xc], dl
cmp ecx, 0xc
je 0x5980695b
movzx edx, byte [esi + 0xd]
mov byte [eax + 0xd], dl
cmp ecx, 0xd
je 0x5980695b
movzx edx, byte [esi + 0xe]
mov byte [eax + 0xe], dl
lea eax, [ebp - 0x28]
mov edi, dword [ebp - 0x40]
mov dword [esp + 4], ebx
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x28]
mov dword [esp], edi
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x48]
call eax
mov ecx, dword [ebp - 0x5c]
xor eax, eax
mov edx, dword [0x59857a61]
sub esp, 0x10
mov ebx, dword [ebp - 0x44]
add ecx, edi
cmp byte [edx], 0
je 0x59806aa8
lea esi, [esi]
mov edx, dword [0x59857a61]
movsx dx, byte [edx + eax]
mov word [ebx + eax*2], dx
mov edx, dword [0x59857a61]
add eax, 1
cmp byte [edx + eax], 0
jne 0x59806998
mov edi, dword [ebp - 0x44]
lea eax, [edi + eax*2]
xor edx, edx
mov word [eax], dx
mov eax, dword [ebp - 0x44]
mov byte [ebp - 0x1c], 1
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x60]
mov dword [ebp - 0x24], eax
lea eax, [ebp - 0x24]
mov dword [esp], eax
call ecx
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret
xor eax, eax
cmp dword [ebp - 0x3c], eax
jne 0x59806421
lea esi, [esi]
nop
mov eax, dword [ebx + 0x18]
mov dword [ebp - 0x40], eax
jmp 0x5980642e
mov dword [esp], 2
mov eax, dword [ebp - 0x54]
call eax
sub esp, 4
jmp 0x5980661c
mov dword [esp], 2
mov eax, dword [ebp - 0x54]
call eax
sub esp, 4
jmp 0x598067b1
mov dword [esp], 2
mov eax, dword [ebp - 0x54]
call eax
sub esp, 4
jmp 0x59806791
mov dword [esp], 1
mov eax, dword [ebp - 0x54]
call eax
sub esp, 4
jmp 0x5980671f
mov eax, dword [ebp - 0x40]
lea edx, [eax + ebx]
lea esi, [esi]
lea esi, [esi]
movzx ecx, byte [esi]
add eax, 1
add esi, 1
mov byte [eax - 1], cl
cmp eax, edx
jne 0x59806a78
jmp 0x5980695b
xor ecx, ecx
jmp 0x59806769
xor ecx, ecx
jmp 0x598066f7
mov eax, dword [ebp - 0x44]
jmp 0x598069bc
xor eax, eax
jmp 0x5980668a