Function at 0x4b51d0
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x90
mov esi, edx
mov dword [esp + 8], ecx
mov ecx, dword [ecx + 8]
mov eax, dword [ecx + 0x6c]
cmp dword [ecx + 0x70], eax
mov dword [esp + 0xc], ecx
jle 0x4b5218
lea edx, [eax + 1]
mov dword [ecx + 0x6c], edx
mov edx, dword [ecx + 0x68]
lea ecx, [eax + eax*4]
mov byte [edx + ecx*4], 0xe
pxor xmm0, xmm0
movdqu xmmword [edx + ecx*4 + 1], xmm0
mov dword [edx + ecx*4 + 0x10], 0
jmp 0x4b522b
mov edx, 0xe
push 0
push 0
push 0
call fcn.004747e0
add esp, 0xc
mov ecx, dword [ebp + 8]
mov dword [esp + 0x58], eax
mov eax, dword [esi + 0xc]
mov dword [esp + 0x64], esi
mov ebx, dword [esi + 0x18]
lea edi, [eax + eax*2]
shl edi, 4
add edi, ebx
mov ecx, dword [ecx + 0x10]
mov dword [esp + 0x2c], ecx
mov ecx, dword [ebp + 0x14]
mov ecx, dword [ecx + 0x50]
test eax, eax
mov dword [esp + 0x1c], ecx
jle 0x4b5557
lea eax, [ecx + 0x3c]
mov dword [esp + 0x54], eax
mov dword [esp + 0x30], 0
xor eax, eax
mov dword [esp + 0x20], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x24], 0
mov ecx, dword [ebp + 8]
jmp 0x4b52ad
mov edx, dword [ebx + 0x20]
and edx, dword [ebp + 0xc]
mov ecx, dword [ebx + 0x24]
and ecx, dword [ebp + 0x10]
or ecx, edx
je 0x4b5380
mov ecx, dword [ebp + 8]
add ebx, 0x30
cmp ebx, edi
jae 0x4b5574
test byte [ebx + 0xa], 2
jne 0x4b5453
movzx edx, byte [ecx + 0x24]
test dl, 0x40
jne 0x4b5453
mov esi, dword [ebx]
mov ecx, dword [esi + 4]
test dl, 8
jne 0x4b52df
test cl, 1
jne 0x4b5450
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx + 0x28]
jmp 0x4b52f7
test cl, 1
je 0x4b5450
mov ecx, dword [esi + 0x24]
mov edx, dword [ebp + 8]
cmp ecx, dword [edx + 0x28]
jne 0x4b5450
mov dword [esp + 0x18], eax
pcmpeqd xmm0, xmm0
movdqa xmmword [esp + 0x70], xmm0
mov dword [esp + 0x84], 0xffffffff
mov dword [esp + 0x80], 0xffffffff
mov word [esp + 0x84], 3
mov dword [esp + 0x74], 0x499e30
mov dword [esp + 0x78], 0x499fa0
mov dword [esp + 0x88], ecx
lea ecx, [esp + 0x70]
mov edx, esi
call fcn.00499fb0
cmp word [esp + 0x84], 0
je 0x4b5449
mov eax, dword [esp + 8]
mov ecx, dword [eax]
mov edx, esi
push 0
push 0
call fcn.0049d550
add esp, 8
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x18]
push eax
call fcn.0048acc0
add esp, 4
jmp 0x4b5450
mov ecx, dword [ebx + 0x18]
test ecx, ecx
js 0x4b529f
mov dword [esp + 0x18], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 4]
mov dword [esp + 0x10], ecx
lea esi, [ecx + ecx*2]
movsx edx, byte [eax + esi*4 + 5]
mov ecx, dword [ebx]
call fcn.004be3d0
test eax, eax
je 0x4b548d
mov dword [esp + 0x28], esi
xor edx, edx
mov ecx, dword [esp + 0x10]
mov eax, 1
shld edx, eax, cl
mov esi, 1
shl esi, cl
test cl, 0x20
cmovne edx, esi
mov eax, 0
cmovne esi, eax
cmp ecx, 0x40
mov eax, 0x80000000
cmovae edx, eax
mov eax, 0
cmovae esi, eax
cmp byte [esp + 0x20], 0
jne 0x4b542a
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 4]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x20]
push dword [ecx + eax*4]
mov eax, dword [esp + 0x30]
push dword [eax]
push str.automatic_index_on__s__s_
push 0x11c
mov dword [esp + 0x20], edx
call fcn.004287c0
mov edx, dword [esp + 0x20]
add esp, 0x10
mov eax, esi
and eax, dword [esp + 0x14]
mov ecx, edx
and ecx, dword [esp + 0x24]
or ecx, eax
mov eax, dword [esp + 0x18]
je 0x4b5496
mov cl, 1
mov dword [esp + 0x20], ecx
jmp 0x4b529f
mov eax, dword [esp + 0x18]
nop dword [eax]
mov ecx, dword [ebp + 8]
mov edx, dword [ebx + 0x14]
cmp edx, dword [ecx + 0x28]
jne 0x4b52a2
test byte [ebx + 0xc], 0x82
je 0x4b52a2
test byte [ecx + 0x24], 0x58
je 0x4b528b
mov ecx, dword [ebx]
test byte [ecx + 4], 3
je 0x4b529f
cmp dword [ecx + 0x24], edx
jne 0x4b529f
jmp 0x4b528b
mov eax, dword [esp + 0x18]
jmp 0x4b529f
mov dword [esp + 0x10], edx
mov cl, 1
mov dword [esp + 0x20], ecx
mov edx, dword [esp + 0x1c]
movzx ecx, word [edx + 0x30]
cmp dword [esp + 0x30], ecx
jge 0x4b54b7
mov ecx, dword [edx + 0x34]
mov dword [esp + 0x28], ecx
jmp 0x4b552f
mov eax, dword [esp + 8]
mov ecx, dword [eax]
mov eax, dword [esp + 0x30]
and eax, 0xfffffff8
mov dword [esp + 0x50], eax
lea edx, [eax*4 + 0x20]
mov dword [esp + 0x4c], ecx
push 0
call fcn.0043f5f0
add esp, 4
test eax, eax
je 0x4b60f6
add dword [esp + 0x50], 8
mov edx, dword [esp + 0x1c]
movzx ecx, word [edx + 0x30]
shl ecx, 2
push ecx
push dword [edx + 0x34]
mov dword [esp + 0x30], eax
push eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x34]
cmp edx, dword [esp + 0x54]
je 0x4b551c
mov ecx, dword [esp + 0x4c]
call fcn.0043f4f0
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x28]
mov dword [eax + 0x34], ecx
mov ecx, dword [esp + 0x50]
mov word [eax + 0x30], cx
mov ecx, dword [ebp + 8]
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x28]
mov dword [edx + eax*4], ebx
inc eax
mov dword [esp + 0x30], eax
or dword [esp + 0x14], esi
mov edx, dword [esp + 0x10]
or dword [esp + 0x24], edx
mov eax, dword [esp + 0x18]
jmp 0x4b52a2
mov dword [esp + 0x14], 0
mov dword [esp + 0x24], 0
xor eax, eax
mov dword [esp + 0x30], 0
mov ecx, dword [ebp + 8]
mov dword [esp + 0x20], edi
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x1c]
mov ebx, dword [esp + 0x30]
mov word [eax + 0x2c], bx
mov word [eax + 0x18], bx
mov dword [eax + 0x28], 0x4241
mov edx, dword [ecx + 0x34]
mov esi, dword [esp + 0x14]
not esi
mov edi, dword [esp + 0x24]
not edi
mov eax, 0x80000000
or edi, eax
and edi, edx
and esi, dword [ecx + 0x30]
mov eax, dword [esp + 0x2c]
movsx ecx, word [eax + 0x22]
cmp cx, 0x3f
mov eax, 0x3f
cmovl eax, ecx
mov dword [esp + 0x54], ecx
test ecx, ecx
mov dword [esp + 0x14], esi
mov dword [esp + 0x24], edi
mov dword [esp + 0x50], eax
mov dword [esp + 0x10], edx
jle 0x4b573d
cmp eax, 2
mov ecx, 1
cmovge ecx, eax
mov eax, ecx
cmp ecx, 4
jae 0x4b55fc
mov edx, 1
xor ecx, ecx
jmp 0x4b5700
mov ecx, eax
and ecx, 0x7ffffffc
movd xmm5, ebx
movd xmm1, esi
movd xmm2, edi
punpckldq xmm1, xmm2
pshufd xmm1, xmm1, 0x44
movdqa xmmword [esp + 0x30], xmm1
movaps xmm1, xmmword [0x529450]
mov edi, ecx
nop dword [eax + eax]
xorps xmm4, xmm4
movss xmm4, xmm1
movaps xmm7, xmm1
pxor xmm0, xmm0
unpckhps xmm7, xmm0
movdqa xmm0, xmmword [0x529460]
movdqa xmm6, xmm0
psllq xmm6, xmm7
movaps xmm2, xmm1
psrldq xmm2, 0xc
movdqa xmm7, xmm0
psllq xmm7, xmm2
movdqa xmm2, xmm0
psllq xmm2, xmm4
movaps xmm3, xmm1
psrlq xmm3, 0x20
movdqa xmm4, xmm0
psllq xmm4, xmm3
movsd xmm7, xmm6
movsd xmm4, xmm2
movapd xmm2, xmmword [esp + 0x30]
andpd xmm4, xmm2
andpd xmm7, xmm2
pxor xmm0, xmm0
pcmpeqd xmm7, xmm0
pshufd xmm2, xmm7, 0xb1
pand xmm2, xmm7
pcmpeqd xmm4, xmm0
pshufd xmm3, xmm4, 0xb1
pand xmm3, xmm4
pcmpeqd xmm0, xmm0
pxor xmm2, xmm0
pxor xmm3, xmm0
packssdw xmm3, xmm2
psubd xmm5, xmm3
paddd xmm1, xmmword [0x529470]
add edi, 0xfffffffc
jne 0x4b5630
pshufd xmm1, xmm5, 0xee
paddd xmm1, xmm5
pshufd xmm0, xmm1, 0x55
paddd xmm0, xmm1
movd ebx, xmm0
cmp eax, ecx
mov edx, 1
je 0x4b573d
nop word cs:[eax + eax]
mov edi, eax
xor eax, eax
shld eax, edx, cl
mov edx, 1
shl edx, cl
test cl, 0x20
cmovne eax, edx
mov esi, 0
cmovne edx, esi
and eax, dword [esp + 0x24]
and edx, dword [esp + 0x14]
mov esi, ebx
xor ebx, ebx
or edx, eax
mov edx, 1
mov eax, edi
setne bl
add esi, ebx
mov ebx, esi
inc ecx
cmp edi, ecx
jne 0x4b5700
mov eax, dword [esp + 0x54]
add eax, 0xffffffc2
cmp dword [esp + 0x10], 0
mov ecx, dword [esp + 8]
mov ecx, dword [ecx]
mov edx, 1
cmovs edx, eax
add edx, ebx
mov esi, edx
shl esi, 0x10
mov dword [esp + 0x28], edx
movsx eax, dx
mov edi, esi
sar edi, 0xe
add edi, 7
and edi, 0xfffffff8
sar esi, 0xf
add eax, esi
add eax, esi
add eax, 9
and eax, 0xfffffff8
lea ebx, [edi + eax]
add ebx, 0x48
test ecx, ecx
je 0x4b57a0
mov eax, ebx
sar eax, 0x1f
mov edx, ebx
push eax
call fcn.0043f5f0
add esp, 4
test eax, eax
jne 0x4b57b4
jmp 0x4b60f6
mov edx, ebx
sar edx, 0x1f
mov ecx, ebx
call fcn.00424d20
test eax, eax
je 0x4b60f6
mov dword [esp + 0x30], esi
add esi, 2
push ebx
push 0
push eax
mov ebx, eax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
lea eax, [ebx + 0x48]
mov dword [ebx + 0x20], eax
lea eax, [ebx + edi]
add eax, 0x48
mov dword [ebx + 8], eax
add esi, eax
mov dword [ebx + 4], esi
add esi, dword [esp + 0x30]
mov dword [ebx + 0x1c], esi
mov eax, dword [esp + 0x28]
mov word [ebx + 0x34], ax
dec eax
mov word [ebx + 0x32], ax
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x20], ebx
mov dword [ebx], str.auto_index
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x10], ebx
mov dword [ebx + 0xc], eax
mov eax, dword [esp + 0x64]
mov edi, dword [eax + 0x18]
mov dword [esp + 0x30], 0
cmp edi, dword [esp + 0x20]
mov ecx, dword [ebp + 8]
mov esi, dword [esp + 0x50]
jae 0x4b5950
mov ebx, 1
mov dword [esp + 0x60], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x30], 0
jmp 0x4b5868
mov eax, dword [edi + 0x20]
and eax, dword [ebp + 0xc]
mov ecx, dword [edi + 0x24]
and ecx, dword [ebp + 0x10]
or ecx, eax
je 0x4b588b
mov ecx, dword [ebp + 8]
add edi, 0x30
cmp edi, dword [esp + 0x20]
jae 0x4b5950
mov eax, dword [edi + 0x14]
cmp eax, dword [ecx + 0x28]
jne 0x4b585b
test byte [edi + 0xc], 0x82
je 0x4b585b
test byte [ecx + 0x24], 0x58
je 0x4b5848
mov ecx, dword [edi]
test byte [ecx + 4], 3
je 0x4b5858
cmp dword [ecx + 0x24], eax
jne 0x4b5858
jmp 0x4b5848
mov ecx, dword [edi + 0x18]
test ecx, ecx
js 0x4b5858
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 4]
mov dword [esp + 0x4c], ecx
lea ecx, [ecx + ecx*2]
movsx edx, byte [eax + ecx*4 + 5]
mov ecx, dword [edi]
mov dword [esp + 0x6c], ecx
call fcn.004be3d0
test eax, eax
je 0x4b5858
xor edx, edx
mov eax, dword [esp + 0x4c]
mov ecx, eax
shld edx, ebx, cl
mov ebx, 1
shl ebx, cl
test al, 0x20
cmovne edx, ebx
mov ecx, 0
cmovne ebx, ecx
cmp eax, 0x40
mov eax, 0x80000000
cmovae edx, eax
cmovae ebx, ecx
mov eax, edx
and eax, dword [esp + 0x5c]
mov ecx, ebx
and ecx, dword [esp + 0x60]
or ecx, eax
jne 0x4b5943
mov dword [esp + 0x68], edx
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 4]
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x4c]
mov word [eax + ecx*2], dx
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x6c]
call fcn.00437f70
test eax, eax
je 0x4b591f
mov eax, dword [eax]
jmp 0x4b5924
mov eax, str.BINARY
mov ecx, dword [esp + 0x10]
mov ecx, dword [ecx + 0x20]
mov edx, dword [esp + 0x30]
mov dword [ecx + edx*4], eax
or dword [esp + 0x60], ebx
mov eax, dword [esp + 0x68]
or dword [esp + 0x5c], eax
inc edx
mov dword [esp + 0x30], edx
mov ecx, dword [ebp + 8]
mov ebx, 1
jmp 0x4b585b
cmp word [esp + 0x54], 0
jle 0x4b59bf
cmp esi, 2
mov eax, 1
cmovl esi, eax
xor edx, edx
xor ecx, ecx
jmp 0x4b5975
inc ecx
cmp esi, ecx
je 0x4b59bf
xor edi, edi
mov eax, 1
shld edi, eax, cl
mov ebx, 1
shl ebx, cl
test cl, 0x20
cmovne edi, ebx
cmovne ebx, edx
and edi, dword [esp + 0x24]
and ebx, dword [esp + 0x14]
or ebx, edi
je 0x4b5970
mov eax, esi
mov esi, dword [esp + 0x10]
mov edi, dword [esi + 4]
mov ebx, dword [esp + 0x30]
mov word [edi + ebx*2], cx
mov edi, dword [esi + 0x20]
mov esi, eax
mov dword [edi + ebx*4], str.BINARY
inc ebx
mov dword [esp + 0x30], ebx
jmp 0x4b5970
mov eax, dword [ebp + 8]
cmp dword [eax + 0x34], 0
jns 0x4b5a20
mov ebx, dword [esp + 0x2c]
cmp word [ebx + 0x22], 0x40
jl 0x4b5a20
mov ecx, dword [esp + 0x30]
lea eax, [ecx + ecx]
lea edx, [ecx*4]
mov ecx, 0x3f
mov esi, dword [esp + 0x10]
nop word [eax + eax]
mov edi, dword [esi + 4]
add edi, eax
mov word [edi + ecx*2 - 0x7e], cx
mov edi, dword [esi + 0x20]
add edi, edx
mov dword [edi + ecx*4 - 0xfc], 0x52bd74
inc ecx
movsx edi, word [ebx + 0x22]
cmp ecx, edi
jl 0x4b59f0
mov eax, dword [esp + 0x30]
add eax, ecx
add eax, 0xffffffc1
mov dword [esp + 0x30], eax
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x10]
mov eax, dword [edx + 4]
mov esi, dword [esp + 0x30]
mov word [eax + esi*2], 0xffff
mov eax, dword [edx + 0x20]
mov dword [eax + esi*4], str.BINARY
mov eax, dword [ecx + 0x28]
mov edx, ecx
lea ecx, [eax + 1]
mov dword [edx + 0x28], ecx
mov ecx, dword [ebp + 0x14]
mov dword [ecx + 8], eax
mov ecx, dword [esp + 0xc]
mov edi, dword [ecx + 0x6c]
cmp dword [ecx + 0x70], edi
jle 0x4b5a8d
lea edx, [edi + 1]
mov dword [ecx + 0x6c], edx
mov edx, dword [ecx + 0x68]
lea ecx, [edi + edi*4]
mov dword [edx + ecx*4], 0x74
mov dword [edx + ecx*4 + 4], eax
mov eax, dword [esp + 0x28]
mov dword [edx + ecx*4 + 8], eax
mov dword [edx + ecx*4 + 0xc], 0
mov dword [edx + ecx*4 + 0x10], 0
jmp 0x4b5aa1
mov edx, 0x74
push 0
push dword [esp + 0x2c]
push eax
call fcn.004747e0
add esp, 0xc
mov ecx, dword [esp + 8]
mov edi, dword [ecx + 8]
mov edx, dword [esp + 0x10]
call fcn.00493ff0
test eax, eax
mov ecx, dword [esp + 0xc]
je 0x4b5af0
mov edx, dword [edi]
cmp byte [edx + 0x57], 0
je 0x4b5ada
cmp dword [edx + 0x210], 0
jne 0x4b5af0
dec dword [eax]
jne 0x4b5af0
mov ecx, dword [eax + 0xc]
mov edx, eax
call fcn.0043f4f0
jmp 0x4b5aec
mov ecx, dword [edi + 0x68]
mov edx, dword [edi + 0x6c]
lea edx, [edx + edx*4]
mov byte [ecx + edx*4 - 0x13], 0xf8
mov dword [ecx + edx*4 - 4], eax
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 8]
mov eax, dword [eax]
test byte [eax + 0x52], 8
jne 0x4b5b6b
mov edx, dword [esp + 8]
mov eax, dword [edx + 0x2c]
inc eax
mov dword [edx + 0x2c], eax
mov edx, dword [ebp + 0x14]
mov dword [edx + 0x34], eax
mov edi, dword [ecx + 0x6c]
cmp dword [ecx + 0x70], edi
jle 0x4b5b52
lea edx, [edi + 1]
mov ecx, dword [esp + 0xc]
mov dword [ecx + 0x6c], edx
mov ecx, dword [esp + 0xc]
mov edx, dword [ecx + 0x68]
lea ecx, [edi + edi*4]
mov dword [edx + ecx*4], 0x4d
mov dword [edx + ecx*4 + 4], 0x2710
mov dword [edx + ecx*4 + 8], eax
mov dword [edx + ecx*4 + 0xc], 0
mov dword [edx + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0xc]
jmp 0x4b5b6b
mov edx, 0x4d
push 0
push eax
push 0x2710
call fcn.004747e0
mov ecx, dword [esp + 0x18]
add esp, 0xc
mov eax, dword [esp + 0x64]
mov eax, dword [eax]
mov ebx, dword [eax + 4]
mov eax, dword [ebp + 0x14]
movzx esi, byte [eax + 0x3c]
shl esi, 6
test byte [ebx + esi + 0x2d], 0x20
mov edi, dword [ecx + 0x6c]
mov edx, dword [ecx + 0x70]
mov dword [esp + 0x24], ebx
mov dword [esp + 0x2c], esi
jne 0x4b5bcd
mov eax, dword [eax + 4]
cmp edx, edi
jle 0x4b5c01
lea edx, [edi + 1]
mov dword [ecx + 0x6c], edx
mov ecx, dword [ecx + 0x68]
lea edx, [edi + edi*4]
mov dword [ecx + edx*4], 0x23
mov dword [ecx + edx*4 + 4], eax
mov dword [ecx + edx*4 + 8], 0
mov dword [ecx + edx*4 + 0xc], 0
mov dword [ecx + edx*4 + 0x10], 0
mov esi, edi
jmp 0x4b5c15
mov eax, dword [ebx + esi + 0x24]
mov dword [esp + 0x14], eax
cmp edx, edi
jle 0x4b5c1c
lea eax, [edi + 1]
mov dword [ecx + 0x6c], eax
mov eax, dword [ecx + 0x68]
mov dword [esp + 0x20], edi
lea edx, [edi + edi*4]
mov byte [eax + edx*4], 0x47
pxor xmm0, xmm0
movdqu xmmword [eax + edx*4 + 1], xmm0
mov dword [eax + edx*4 + 0x10], 0
jmp 0x4b5c37
mov edx, 0x23
push 0
push 0
push eax
call fcn.004747e0
add esp, 0xc
mov esi, eax
xor edi, edi
jmp 0x4b5ce6
mov edx, 0x47
push 0
push 0
push 0
call fcn.004747e0
mov ecx, dword [esp + 0x18]
add esp, 0xc
mov dword [esp + 0x20], eax
mov eax, dword [ebx + esi + 0x20]
mov edi, dword [ecx + 0x6c]
cmp dword [ecx + 0x70], edi
jle 0x4b5c76
mov ebx, ecx
lea edx, [edi + 1]
mov dword [ecx + 0x6c], edx
mov edx, dword [ecx + 0x68]
lea ecx, [edi + edi*4]
mov dword [edx + ecx*4], 0xa
mov esi, dword [esp + 0x14]
mov dword [edx + ecx*4 + 4], esi
mov dword [edx + ecx*4 + 8], 0
mov dword [edx + ecx*4 + 0xc], eax
mov dword [edx + ecx*4 + 0x10], 0
jmp 0x4b5c8c
mov ebx, ecx
mov edx, 0xa
push eax
push 0
push dword [esp + 0x1c]
call fcn.004747e0
add esp, 0xc
mov esi, dword [ebx + 0x6c]
cmp dword [ebx + 0x70], esi
mov ecx, ebx
mov edi, dword [esp + 0x20]
jle 0x4b5ccf
lea eax, [esi + 1]
mov dword [ecx + 0x6c], eax
mov eax, dword [ecx + 0x68]
lea ecx, [esi + esi*4]
mov dword [eax + ecx*4], 0xb
mov edx, dword [esp + 0x14]
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
jmp 0x4b5ce6
mov edx, 0xb
push 0
push 0
push dword [esp + 0x1c]
call fcn.004747e0
add esp, 0xc
mov esi, eax
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0x18]
test eax, eax
mov dword [esp + 0x20], edi
je 0x4b5d18
mov edi, dword [ecx + 0x38]
dec edi
mov dword [ecx + 0x38], edi
push 0x10
push edi
push eax
push ecx
call fcn.004991c0
mov ecx, dword [esp + 0x18]
add esp, 0x10
mov eax, dword [esp + 0x1c]
or byte [eax + 0x2a], 2
jmp 0x4b5d1a
xor edi, edi
movzx eax, byte [ecx + 0x13]
test al, al
je 0x4b5d33
dec al
mov byte [ecx + 0x13], al
movzx eax, al
mov edx, dword [ecx + eax*4 + 0x98]
jmp 0x4b5d3a
mov edx, dword [ecx + 0x2c]
inc edx
mov dword [ecx + 0x2c], edx
mov eax, dword [ebp + 0x14]
mov ebx, eax
mov eax, dword [eax + 4]
sub esp, 0x18
pxor xmm0, xmm0
movdqu xmmword [esp + 8], xmm0
mov dword [esp + 0x2c], edx
mov dword [esp + 4], edx
mov dword [esp], eax
mov edx, dword [esp + 0x28]
call fcn.004a8900
add esp, 0x18
mov dword [esp + 0x10], eax
mov ebx, dword [ebx + 0x34]
test ebx, ebx
mov ecx, dword [esp + 0xc]
je 0x4b5df1
mov eax, dword [esp + 0x1c]
movzx edx, word [eax + 0x18]
mov eax, dword [ecx + 0x6c]
cmp dword [ecx + 0x70], eax
mov dword [esp + 0x1c], edx
jle 0x4b5dbe
lea edx, [eax + 1]
mov dword [ecx + 0x6c], edx
mov ecx, dword [ecx + 0x68]
lea edx, [eax + eax*4]
mov dword [ecx + edx*4], 0xb4
mov dword [ecx + edx*4 + 4], ebx
mov dword [ecx + edx*4 + 8], 0
mov ebx, dword [esp + 0x10]
mov dword [ecx + edx*4 + 0xc], ebx
mov dword [ecx + edx*4 + 0x10], 0
mov ecx, dword [esp + 0xc]
jmp 0x4b5dd6
mov edx, 0xb4
push dword [esp + 0x10]
push 0
push ebx
call fcn.004747e0
mov ecx, dword [esp + 0x18]
add esp, 0xc
mov edx, dword [ecx]
cmp byte [edx + 0x57], 0
jne 0x4b5df1
mov edx, dword [ecx + 0x68]
lea eax, [eax + eax*4]
mov byte [edx + eax*4 + 1], 0xfd
mov ebx, dword [esp + 0x1c]
mov dword [edx + eax*4 + 0x10], ebx
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
mov ebx, dword [ecx + 0x6c]
cmp dword [ecx + 0x70], ebx
jle 0x4b5e3c
lea edx, [ebx + 1]
mov ecx, dword [esp + 0xc]
mov dword [ecx + 0x6c], edx
mov ecx, dword [esp + 0xc]
mov edx, dword [ecx + 0x68]
lea ecx, [ebx + ebx*4]
mov dword [edx + ecx*4], 0x8a
mov dword [edx + ecx*4 + 4], eax
mov eax, dword [esp + 0x14]
mov dword [edx + ecx*4 + 8], eax
mov dword [edx + ecx*4 + 0xc], 0
mov dword [edx + ecx*4 + 0x10], 0
mov edx, dword [esp + 0xc]
jmp 0x4b5e54
mov edx, 0x8a
push 0
push dword [esp + 0x18]
push eax
call fcn.004747e0
mov edx, dword [esp + 0x18]
add esp, 0xc
mov ebx, dword [esp + 0x24]
mov eax, dword [edx + 0x6c]
test eax, eax
jle 0x4b5e6c
mov ecx, dword [edx + 0x68]
lea eax, [eax + eax*4]
mov word [ecx + eax*4 - 0x12], 0x10
mov eax, dword [esp + 0x2c]
add ebx, eax
add ebx, 0x2d
cmp dword [esp + 0x18], 0
je 0x4b5e96
mov ecx, dword [edx + 0xc]
not edi
mov eax, dword [ecx + 0x38]
add eax, dword [ecx + 0x3c]
js 0x4b5f17
mov eax, dword [edx + 0x6c]
mov ecx, dword [ecx + 0x40]
mov dword [ecx + edi*4], eax
test byte [ebx], 0x20
jne 0x4b5f31
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 4]
mov ebx, esi
inc esi
mov ecx, dword [edx + 0x6c]
cmp dword [edx + 0x70], ecx
jle 0x4b5edf
mov edi, edx
lea edx, [ecx + 1]
mov dword [edi + 0x6c], edx
mov edx, dword [edi + 0x68]
lea ecx, [ecx + ecx*4]
mov dword [edx + ecx*4], 0x26
mov dword [edx + ecx*4 + 4], eax
mov dword [edx + ecx*4 + 8], esi
mov dword [edx + ecx*4 + 0xc], 0
mov dword [edx + ecx*4 + 0x10], 0
jmp 0x4b5ef4
mov ecx, edx
mov edi, edx
mov edx, 0x26
push 0
push esi
push eax
call fcn.004747e0
add esp, 0xc
mov eax, dword [edi + 0x6c]
test eax, eax
mov ecx, edi
mov edi, dword [esp + 0x58]
jle 0x4b607d
mov edx, dword [ecx + 0x68]
lea eax, [eax + eax*4]
mov word [edx + eax*4 - 0x12], 3
jmp 0x4b607d
mov edx, dword [esp + 0xc]
push edi
call fcn.0049d4a0
mov edx, dword [esp + 0x10]
add esp, 4
test byte [ebx], 0x20
je 0x4b5e9f
mov dword [esp + 0x1c], ebx
mov edi, dword [esp + 0x20]
test edi, edi
jns 0x4b5f41
mov edi, dword [edx + 0x6c]
dec edi
mov ebx, dword [esp + 0x10]
add ebx, dword [esp + 0x30]
mov ecx, dword [edx]
mov eax, 0x53e0e4
cmp byte [ecx + 0x57], 0
jne 0x4b5f5f
lea eax, [edi + edi*4]
shl eax, 2
add eax, dword [edx + 0x68]
mov dword [eax + 8], ebx
mov eax, dword [esp + 8]
mov ecx, dword [eax + 8]
mov edx, esi
mov dword [esp + 0x30], esi
test esi, esi
jns 0x4b5f77
mov edx, dword [ecx + 0x6c]
dec edx
mov esi, dword [ecx]
mov eax, 0x53e0e4
cmp byte [esi + 0x57], 0
mov ebx, dword [esp + 0x24]
jne 0x4b5f91
lea eax, [edx + edx*4]
shl eax, 2
add eax, dword [ecx + 0x68]
mov edx, dword [esp + 8]
mov edx, dword [edx]
cmp byte [edx + 0x57], 0
jne 0x4b6017
mov ecx, dword [ecx + 0x6c]
sub ecx, dword [esp + 0x30]
jle 0x4b6017
mov esi, dword [ebp + 0x14]
mov edx, dword [esi + 4]
mov esi, dword [esi + 8]
mov edi, dword [esp + 0x2c]
mov edi, dword [ebx + edi + 0x28]
jmp 0x4b5fd6
mov byte [eax], 0x7e
mov dword [eax + 4], esi
test esi, esi
je 0x4b600b
nop word cs:[eax + eax]
add eax, 0x14
dec ecx
je 0x4b6017
cmp dword [eax + 4], edx
jne 0x4b5fd0
movzx ebx, byte [eax]
cmp ebx, 0x87
je 0x4b5fb9
cmp ebx, 0x5e
jne 0x4b5fd0
mov byte [eax], 0x50
mov ebx, dword [eax + 8]
add ebx, edi
mov dword [eax + 4], ebx
mov ebx, dword [eax + 0xc]
mov dword [eax + 8], ebx
mov dword [eax + 0xc], 0
mov word [eax + 2], 2
jmp 0x4b5fd0
mov byte [eax], 0x4b
mov dword [eax + 0xc], 0
jmp 0x4b5fd0
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 0x6c]
cmp dword [ecx + 0x70], eax
jle 0x4b6058
lea edx, [eax + 1]
mov dword [ecx + 0x6c], edx
mov edx, dword [ecx + 0x68]
lea eax, [eax + eax*4]
mov dword [edx + eax*4], 8
mov dword [edx + eax*4 + 4], 0
mov ebx, dword [esp + 0x30]
mov dword [edx + eax*4 + 8], ebx
mov dword [edx + eax*4 + 0xc], 0
mov dword [edx + eax*4 + 0x10], 0
jmp 0x4b6072
mov edx, 8
push 0
mov ebx, dword [esp + 0x34]
push ebx
push 0
call fcn.004747e0
mov ecx, dword [esp + 0x18]
add esp, 0xc
mov eax, dword [esp + 0x1c]
and byte [eax], 0xdf
mov edi, dword [esp + 0x58]
mov edx, dword [ecx]
mov eax, dword [ecx + 0x6c]
mov ecx, 0x53e0e4
cmp byte [edx + 0x57], 0
jne 0x4b60a2
lea ecx, [eax - 1]
test ebx, ebx
cmovns ecx, ebx
lea ecx, [ecx + ecx*4]
shl ecx, 2
mov edx, dword [esp + 0xc]
add ecx, dword [edx + 0x68]
mov dword [ecx + 8], eax
mov edx, dword [esp + 0x14]
test edx, edx
je 0x4b60ce
mov eax, dword [esp + 8]
movzx eax, byte [eax + 0x13]
cmp eax, 7
ja 0x4b60ce
mov ecx, eax
inc cl
mov esi, edx
mov edx, dword [esp + 8]
mov byte [edx + 0x13], cl
mov dword [edx + eax*4 + 0x98], esi
mov esi, dword [esp + 0xc]
mov edx, dword [esi]
mov eax, dword [esi + 0x6c]
mov ecx, 0x53e0e4
cmp byte [edx + 0x57], 0
jne 0x4b60f3
lea ecx, [eax - 1]
test edi, edi
cmovns ecx, edi
lea ecx, [ecx + ecx*4]
shl ecx, 2
add ecx, dword [esi + 0x68]
mov dword [ecx + 8], eax
mov eax, dword [esp + 8]
mov edx, dword [esp + 0x18]
test edx, edx
je 0x4b6109
mov ecx, dword [eax]
call fcn.00469350
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret