Function at 0x4b3c70
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5af7e9
mov eax, dword fs:[0]
push eax
sub esp, 0x8c4
mov eax, dword [0x5fa040]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x854], ecx
mov eax, dword [ebp + 8]
lea edx, [ebp - 0x810]
mov dword [ebp - 0x850], eax
mov edi, 0x800
xor eax, eax
mov dword [ebp - 0x818], edx
mov dword [ebp - 0x81c], eax
nop word [eax + eax]
mov eax, dword [ebp - 0x850]
lea esi, [ebp - 0x814]
mov ecx, SysReAllocString
cmp edi, ecx
push esi
mov eax, dword [eax]
cmovb ecx, edi
push ecx
push edx
push dword [ebp - 0x850]
call dword [eax + 0xc]
mov edx, dword [ebp - 0x818]
mov ecx, eax
mov eax, dword [ebp - 0x814]
add edx, eax
add dword [ebp - 0x81c], eax
sub edi, eax
mov esi, dword [ebp - 0x854]
mov dword [ebp - 0x818], edx
test ecx, ecx
jne 0x4b51d2
test eax, eax
je 0x4b3d28
test edi, edi
jne 0x4b3cd0
xor ecx, ecx
cmp dword [ebp - 0x81c], 0x800
setne cl
jne 0x4b51d2
lea eax, [ebp - 0x410]
push eax
lea ecx, [esi + 0x78]
call fcn.004b3160
test al, al
je 0x4b4a99
cmp word [esi + 0xc2], 0
jne 0x4b4a99
mov edx, dword [esi + 0x9c]
mov ecx, edx
add ecx, dword [esi + 0x88]
mov eax, dword [esi + 0x8c]
adc eax, 0
add ecx, 0xffffffff
push 0
push edx
adc eax, 0xffffffff
push eax
push ecx
call fcn.005a7c60
mov dword [ebp - 0x848], eax
test edx, edx
ja 0x4b4a99
jb 0x4b3da4
cmp eax, 0x80000000
ja 0x4b4a99
mov eax, dword [esi + 0xc8]
shr eax, 7
mov dword [ebp - 0x84c], 5
test al, 1
je 0x4b3dd3
cmp word [esi + 0x134], 0x40
jne 0x4b4a99
mov dword [ebp - 0x84c], 6
mov byte [esi + 0x70], 1
mov eax, dword [esi + 0x88]
mov edx, dword [esi + 0x8c]
mov ecx, dword [esi + 0x78]
call fcn.005a8080
mov ecx, dword [esi + 0x148]
mov dword [esi + 0x68], eax
mov dword [esi + 0x6c], edx
test ecx, ecx
je 0x4b3e0f
mov eax, dword [ecx]
lea edx, [esi + 0x68]
push edx
push 0
push ecx
call dword [eax + 0xc]
test eax, eax
jne 0x4b51d4
mov ecx, dword [ebp - 0x850]
lea edx, [ebp - 0x870]
xorps xmm0, xmm0
movlpd qword [ebp - 0x870], xmm0
call fcn.00439b60
test eax, eax
jne 0x4b51d4
mov dword [ebp - 0x840], eax
mov dword [ebp - 0x83c], eax
mov dword [ebp - 0x818], eax
mov dword [ebp - 0x838], eax
mov dword [ebp - 4], eax
mov dword [ebp - 0x828], eax
mov dword [ebp - 0x824], eax
mov edx, dword [ebp - 0x848]
mov ecx, dword [ebp - 0x84c]
shl edx, cl
mov eax, edx
mov byte [ebp - 4], 1
shr eax, cl
mov dword [ebp - 0x814], edx
cmp eax, dword [ebp - 0x848]
jne 0x4b4272
test edx, edx
je 0x4b3eab
push edx
mov dword [ebp - 0x824], 0
call fcn.0058813f
mov edx, dword [ebp - 0x814]
add esp, 4
mov dword [ebp - 0x828], eax
mov dword [ebp - 0x824], edx
push edx
push dword [ebp - 0x828]
mov eax, 0xa
mov ecx, esi
cmp eax, dword [esi + 0x78]
push 0
sbb eax, eax
add eax, 2
push eax
push dword [ebp - 0x850]
call fcn.004b3b90
mov edi, eax
test edi, edi
jne 0x4b4277
mov dword [ebp - 0x81c], eax
cmp dword [ebp - 0x848], eax
jbe 0x4b429a
mov ecx, dword [ebp - 0x84c]
mov edx, 1
shl edx, cl
mov dword [ebp - 0x820], edx
nop
mov edi, eax
mov dword [ebp - 0x8cc], 0
shl edi, cl
add edi, dword [ebp - 0x828]
mov dword [ebp - 0x8c4], 0
mov dword [ebp - 0x8bc], 0
mov dword [ebp - 0x8a4], 0
mov eax, dword [edi]
mov dword [ebp - 0x8d0], eax
mov eax, dword [edi + 4]
mov dword [ebp - 0x8c8], eax
mov eax, dword [edi + 8]
mov dword [ebp - 0x8c0], eax
movzx eax, word [edi + 0xc]
mov dword [ebp - 0x8b8], eax
movzx eax, word [edi + 0xe]
mov dword [ebp - 0x8b4], eax
movzx eax, word [edi + 0x10]
mov dword [ebp - 0x8b0], eax
movzx eax, word [edi + 0x12]
mov word [ebp - 0x8ac], ax
mov eax, dword [edi + 0x14]
mov dword [ebp - 0x8a8], eax
movzx eax, word [edi + 0x18]
mov dword [ebp - 0x8a0], eax
movzx eax, word [edi + 0x1a]
mov dword [ebp - 0x89c], eax
movzx eax, word [edi + 0x1c]
mov dword [ebp - 0x898], eax
mov ax, word [edi + 0x1e]
mov word [ebp - 0x842], ax
mov word [ebp - 0x894], ax
cmp edx, 0x40
jb 0x4b4078
xor eax, eax
mov ecx, dword [edi + 0x20]
or eax, dword [edi]
mov dword [ebp - 0x8d0], eax
xor eax, eax
or eax, dword [edi + 4]
mov dword [ebp - 0x8c8], eax
xor eax, eax
or eax, dword [edi + 8]
mov dword [ebp - 0x8c0], eax
movzx eax, word [edi + 0x2c]
shl eax, 0x10
mov dword [ebp - 0x8cc], ecx
mov ecx, dword [edi + 0x24]
mov dword [ebp - 0x8c4], ecx
mov ecx, dword [edi + 0x28]
mov dword [ebp - 0x8bc], ecx
movzx ecx, word [edi + 0xc]
or eax, ecx
movzx ecx, word [edi + 0xe]
mov dword [ebp - 0x8b8], eax
movzx eax, word [edi + 0x2e]
shl eax, 0x10
or eax, ecx
movzx ecx, word [edi + 0x10]
mov dword [ebp - 0x8b4], eax
movzx eax, word [edi + 0x30]
shl eax, 0x10
or eax, ecx
movzx ecx, word [edi + 0x1c]
mov dword [ebp - 0x8b0], eax
movzx eax, word [edi + 0x32]
shl eax, 0x10
or eax, ecx
mov ecx, dword [edi + 0x34]
mov dword [ebp - 0x898], eax
xor eax, eax
or eax, dword [edi + 0x14]
mov dword [ebp - 0x8a8], eax
movzx eax, word [edi + 0x38]
shl eax, 0x10
mov dword [ebp - 0x8a4], ecx
movzx ecx, word [edi + 0x18]
or eax, ecx
movzx ecx, word [edi + 0x1a]
mov dword [ebp - 0x8a0], eax
movzx eax, word [edi + 0x3a]
shl eax, 0x10
or eax, ecx
mov dword [ebp - 0x89c], eax
mov ecx, dword [esi + 0xcc]
mov eax, ecx
shr eax, 0xa
test al, 1
jne 0x4b4170
shr ecx, 4
test cl, 1
je 0x4b4170
lea edx, [esi + 0xd0]
mov ecx, 0xffff
lea eax, [edx + 0x10]
mov dword [ebp - 0x814], eax
cmp edx, eax
je 0x4b40d1
mov esi, eax
movzx eax, byte [edx]
inc edx
xor eax, ecx
shr ecx, 8
movzx eax, al
movzx eax, word [eax*2 + 0x60b480]
xor ecx, eax
cmp edx, esi
jne 0x4b40b1
mov esi, dword [ebp - 0x854]
mov eax, dword [ebp - 0x81c]
lea edx, [ebp - 0x874]
mov dword [ebp - 0x874], eax
movzx eax, byte [edx]
inc edx
xor eax, ecx
shr ecx, 8
movzx eax, al
movzx eax, word [eax*2 + 0x60b480]
xor ecx, eax
lea eax, [ebp - 0x870]
cmp edx, eax
jne 0x4b40e3
lea eax, [edi + 0x1e]
mov edx, edi
cmp edi, eax
je 0x4b4130
lea esi, [edi + 0x1e]
nop
movzx eax, byte [edx]
inc edx
xor eax, ecx
shr ecx, 8
movzx eax, al
movzx eax, word [eax*2 + 0x60b480]
xor ecx, eax
cmp edx, esi
jne 0x4b4110
mov esi, dword [ebp - 0x854]
mov eax, dword [ebp - 0x820]
cmp eax, 0x20
je 0x4b4161
lea edx, [edi + 0x20]
lea edi, [eax - 0x20]
add edi, edx
cmp edx, edi
je 0x4b4161
movzx eax, byte [edx]
inc edx
xor eax, ecx
shr ecx, 8
movzx eax, al
movzx eax, word [eax*2 + 0x60b480]
xor ecx, eax
cmp edx, edi
jne 0x4b4147
movzx eax, word [ebp - 0x842]
cmp ecx, eax
jne 0x4b4272
mov edi, dword [ebp - 0x818]
mov eax, dword [ebp - 0x83c]
cmp eax, edi
jne 0x4b420f
cmp edi, 0x7fffffff
jae 0x4b51f1
mov eax, edi
mov ecx, SysReAllocString
shr eax, 2
sub ecx, edi
inc eax
cmp eax, ecx
cmovbe ecx, eax
add edi, ecx
mov ecx, 0x40
mov eax, edi
mov dword [ebp - 0x818], edi
mul ecx
mov ecx, 0xffffffff
cmovb eax, ecx
push eax
call fcn.0058813f
mov ecx, eax
add esp, 4
mov eax, dword [ebp - 0x83c]
mov dword [ebp - 0x814], ecx
test eax, eax
je 0x4b41e9
shl eax, 6
push eax
push dword [ebp - 0x840]
push ecx
call fcn.0058aed0
add esp, 0xc
push dword [ebp - 0x840]
call fcn.00588148
mov eax, dword [ebp - 0x814]
add esp, 4
mov dword [ebp - 0x840], eax
mov eax, dword [ebp - 0x83c]
mov dword [ebp - 0x838], edi
movups xmm0, xmmword [ebp - 0x8d0]
lea ecx, [eax + 1]
shl eax, 6
add eax, dword [ebp - 0x840]
mov dword [ebp - 0x83c], ecx
movups xmmword [eax], xmm0
movups xmm0, xmmword [ebp - 0x8c0]
movups xmmword [eax + 0x10], xmm0
movups xmm0, xmmword [ebp - 0x8b0]
movups xmmword [eax + 0x20], xmm0
movups xmm0, xmmword [ebp - 0x8a0]
movups xmmword [eax + 0x30], xmm0
mov eax, dword [ebp - 0x81c]
inc eax
mov dword [ebp - 0x81c], eax
cmp eax, dword [ebp - 0x848]
jae 0x4b429a
mov edx, dword [ebp - 0x820]
mov ecx, dword [ebp - 0x84c]
jmp 0x4b3f00
mov edi, 1
push dword [ebp - 0x828]
call fcn.00588148
add esp, 4
push dword [ebp - 0x840]
call fcn.00588148
add esp, 4
mov eax, edi
jmp 0x4b51d4
mov byte [ebp - 4], 0
push dword [ebp - 0x828]
call fcn.00588148
mov edi, dword [esi + 0x80]
add esp, 4
cmp edi, dword [esi + 0x98]
jb 0x4b430f
mov eax, dword [esi + 0xa4]
mov edx, edi
movzx ecx, word [esi + 0xc0]
cmp eax, edi
cmovbe edx, eax
mov eax, edx
mov dword [ebp - 0x820], edx
imul eax, ecx
xor edx, edx
mov dword [ebp - 0x858], eax
div ecx
mov ecx, dword [ebp - 0x820]
cmp eax, ecx
jne 0x4b430f
xor eax, eax
cmp eax, dword [ebp - 0x86c]
jb 0x4b4329
ja 0x4b4307
mov eax, dword [ebp - 0x858]
cmp eax, dword [ebp - 0x870]
jbe 0x4b4329
cmp ecx, 0x1000000
jbe 0x4b4329
push dword [ebp - 0x840]
mov edi, 1
call fcn.00588148
add esp, 4
mov eax, edi
jmp 0x4b51d4
sub edi, dword [esi + 0x98]
mov edx, 4
add edi, 1
je 0x4b43b4
cmp edi, dword [esi + 0x30]
lea ecx, [esi + 0x28]
jbe 0x4b4358
cmp edi, 0x7fffffff
ja 0x4b51f1
push edi
call fcn.004b82b0
mov edx, 4
cmp edi, dword [esi + 0x24]
jbe 0x4b43b4
cmp edi, 0x7fffffff
ja 0x4b51f1
mov eax, edi
mov ecx, 0xffffffff
mul edx
cmovb eax, ecx
push eax
call fcn.0058813f
mov ecx, eax
add esp, 4
mov eax, dword [esi + 0x20]
mov dword [ebp - 0x814], ecx
test eax, eax
je 0x4b439d
shl eax, 2
push eax
push dword [esi + 0x1c]
push ecx
call fcn.0058aed0
add esp, 0xc
push dword [esi + 0x1c]
call fcn.00588148
mov eax, dword [ebp - 0x814]
add esp, 4
mov dword [esi + 0x1c], eax
mov dword [esi + 0x24], edi
mov dword [ebp - 0x834], 0
mov dword [ebp - 0x830], 0
mov edi, dword [ebp - 0x858]
mov byte [ebp - 4], 2
test edi, edi
je 0x4b43f5
push edi
mov dword [ebp - 0x830], 0
call fcn.0058813f
add esp, 4
mov dword [ebp - 0x834], eax
mov dword [ebp - 0x830], edi
xor edx, edx
mov dword [ebp - 0x868], edx
mov dword [ebp - 0x864], edx
mov byte [ebp - 4], 3
mov edi, 1
mov ecx, dword [esi + 0x78]
shl edi, cl
mov dword [ebp - 0x85c], edi
test edi, edi
je 0x4b4438
push edi
mov dword [ebp - 0x864], edx
call fcn.0058813f
mov edx, eax
mov dword [ebp - 0x864], edi
add esp, 4
mov dword [ebp - 0x868], edx
xor eax, eax
xor ecx, ecx
mov dword [ebp - 0x860], ecx
mov dword [ebp - 0x81c], eax
mov dword [ebp - 0x814], eax
cmp dword [ebp - 0x83c], eax
jbe 0x4b47fe
mov eax, dword [ebp - 0x840]
add eax, 8
mov dword [ebp - 0x818], eax
nop dword [eax]
cmp ecx, dword [esi + 0x80]
jae 0x4b47f8
push dword [ebp - 0x85c]
mov ecx, esi
push edx
push dword [eax + 4]
push dword [eax]
push dword [ebp - 0x850]
call fcn.004b3b90
mov edi, eax
test edi, edi
jne 0x4b4815
push dword [ebp - 0x858]
mov eax, dword [ebp - 0x818]
mov ecx, esi
push dword [ebp - 0x834]
push dword [eax + 0xc]
push dword [eax + 8]
push dword [ebp - 0x850]
call fcn.004b3b90
mov edi, eax
test edi, edi
jne 0x4b4815
mov ecx, dword [ebp - 0x860]
xor edx, edx
mov dword [ebp - 0x84c], edi
mov dword [ebp - 0x844], edx
cmp dword [ebp - 0x820], edx
jbe 0x4b45ae
lea eax, [ecx + 1]
mov dword [ebp - 0x848], eax
nop word [eax + eax]
cmp ecx, dword [esi + 0x80]
jae 0x4b45ae
mov eax, dword [ebp - 0x844]
mov ecx, edx
and ecx, 7
shr eax, 3
mov edx, 1
shl edx, cl
mov ecx, dword [ebp - 0x868]
test byte [eax + ecx], dl
mov edx, dword [ebp - 0x844]
jne 0x4b4541
mov eax, dword [ebp - 0x848]
inc edi
mov dword [ebp - 0x84c], edi
jmp 0x4b4587
movzx ecx, word [esi + 0xc0]
xor eax, eax
mov edi, ecx
imul edi, edx
add edi, dword [ebp - 0x834]
test ecx, ecx
je 0x4b456f
nop dword [eax]
cmp byte [eax + edi], 0
jne 0x4b45f0
inc eax
cmp eax, ecx
jb 0x4b4560
mov eax, dword [ebp - 0x848]
cmp eax, dword [esi + 0xbc]
jb 0x4b4581
mov byte [esi + 0x71], 1
mov edi, dword [ebp - 0x84c]
mov ecx, dword [ebp - 0x860]
inc edx
inc ecx
mov dword [ebp - 0x844], edx
inc eax
mov dword [ebp - 0x860], ecx
mov dword [ebp - 0x848], eax
cmp edx, dword [ebp - 0x820]
jb 0x4b4500
mov eax, dword [ebp - 0x818]
add dword [ebp - 0x81c], edi
cmp edi, dword [eax + 0x14]
je 0x4b45c3
mov byte [esi + 0x72], 1
mov edx, dword [ebp - 0x814]
add eax, 0x40
inc edx
mov dword [ebp - 0x818], eax
mov dword [ebp - 0x814], edx
cmp edx, dword [ebp - 0x83c]
jae 0x4b47f8
mov edx, dword [ebp - 0x868]
jmp 0x4b4470
movaps xmm0, xmmword [0x5d3150]
mov eax, dword [edi + 4]
movzx ecx, word [edi]
mov edx, dword [edi + 0x6c]
movups xmmword [ebp - 0xa8], xmm0
mov dword [ebp - 0x88], eax
movups xmm0, xmmword [edi + 0x28]
mov eax, dword [edi + 8]
mov dword [ebp - 0x78], eax
mov eax, dword [edi + 0xc]
movups xmmword [ebp - 0x4c], xmm0
mov dword [ebp - 0x68], eax
movups xmm0, xmmword [edi + 0x38]
mov eax, dword [edi + 0x10]
mov dword [ebp - 0x80], eax
movzx eax, word [edi + 0x1a]
movups xmmword [ebp - 0x3c], xmm0
mov dword [ebp - 0x58], eax
movups xmm0, xmmword [edi + 0x48]
mov eax, dword [edi + 0x20]
mov word [ebp - 0x98], cx
and ecx, 0xf000
mov dword [ebp - 0x54], eax
mov eax, dword [edi + 0x60]
mov dword [ebp - 0x50], 0
mov dword [ebp - 0x7c], 0
mov dword [ebp - 0x74], 0
mov dword [ebp - 0x6c], 0
mov dword [ebp - 0x70], 0
mov dword [ebp - 0x64], 0
mov dword [ebp - 0x84], 0
mov dword [ebp - 0x14], eax
movups xmmword [ebp - 0x2c], xmm0
movq xmm0, qword [edi + 0x58]
movq qword [ebp - 0x1c], xmm0
cmp ecx, 0x8000
jne 0x4b46ae
xor eax, eax
mov dword [ebp - 0x84], edx
or eax, dword [edi + 4]
mov dword [ebp - 0x88], eax
movzx eax, word [edi + 0x74]
xor ecx, ecx
or ecx, dword [edi + 0x1c]
cdq
mov dword [ebp - 0x5c], eax
movzx eax, word [edi + 0x78]
shl eax, 0x10
mov dword [ebp - 0x60], ecx
movzx ecx, word [edi + 2]
or eax, ecx
movzx ecx, word [edi + 0x18]
mov dword [ebp - 0x94], eax
movzx eax, word [edi + 0x7a]
shl eax, 0x10
or eax, ecx
mov dword [ebp - 0x90], eax
movzx eax, word [esi + 0xc0]
mov ecx, eax
mov dword [ebp - 0x824], ecx
mov ecx, 0x80
cmp ax, cx
jbe 0x4b4747
movzx edx, word [edi + 0x80]
movzx eax, ax
lea ecx, [edx + 0x80]
cmp ecx, eax
ja 0x4b4810
cmp edx, 0x1c
jb 0x4b4747
mov eax, dword [edi + 0x84]
mov dword [ebp - 0x64], eax
mov eax, dword [edi + 0x88]
mov dword [ebp - 0x7c], eax
mov eax, dword [edi + 0x8c]
mov dword [ebp - 0x74], eax
mov eax, dword [edi + 0x90]
mov dword [ebp - 0x70], eax
mov eax, dword [edi + 0x94]
mov dword [ebp - 0x6c], eax
mov edi, dword [ebp - 0x848]
cmp dword [esi + 0x20], edi
jae 0x4b4766
lea eax, [esi + 0x1c]
push 0xffffffffffffffff
mov ecx, eax
call fcn.004766a0
lea eax, [esi + 0x1c]
cmp dword [esi + 0x20], edi
jb 0x4b4755
mov edx, dword [esi + 0x30]
lea eax, [esi + 0x1c]
mov dword [ebp - 0x824], eax
cmp dword [esi + 0x2c], edx
jne 0x4b479c
cmp edx, 0x7fffffff
jae 0x4b47de
mov eax, edx
mov ecx, SysReAllocString
sub ecx, edx
shr eax, 2
inc eax
cmp eax, ecx
cmovbe ecx, eax
add ecx, edx
push ecx
lea ecx, [esi + 0x28]
call fcn.004b82b0
mov edx, dword [esi + 0x2c]
mov ecx, 0x26
imul edi, edx, 0x98
push edx
lea eax, [edx + 1]
mov dword [esi + 0x2c], eax
add edi, dword [esi + 0x28]
lea esi, [ebp - 0xa8]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebp - 0x824]
call fcn.004766a0
mov esi, dword [ebp - 0x854]
mov eax, dword [ebp - 0x848]
mov edx, dword [ebp - 0x844]
jmp 0x4b4581
mov dword [ebp - 0x824], 0x7e5
lea eax, [ebp - 0x824]
push 0x5f79a8
jmp 0x4b5206
mov eax, dword [ebp - 0x81c]
cmp eax, dword [esi + 0x98]
je 0x4b480a
mov byte [esi + 0x72], 1
cmp dword [esi + 0x20], 2
ja 0x4b4843
mov edi, 1
push dword [ebp - 0x868]
call fcn.00588148
push dword [ebp - 0x834]
call fcn.00588148
add esp, 8
push dword [ebp - 0x840]
call fcn.00588148
add esp, 4
mov eax, edi
jmp 0x4b51d4
push dword [ebp - 0x868]
call fcn.00588148
push dword [ebp - 0x834]
call fcn.00588148
mov dword [ebp - 4], 0xffffffff
push dword [ebp - 0x840]
call fcn.00588148
mov edi, dword [ebp - 0x850]
add esp, 0xc
mov eax, dword [edi]
push edi
call dword [eax + 4]
mov ecx, dword [esi + 0x60]
test ecx, ecx
je 0x4b4887
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
xor edx, edx
mov dword [esi + 0x60], edi
mov dword [ebp - 0x834], edx
mov dword [ebp - 0x830], edx
mov dword [ebp - 4], 4
xor ecx, ecx
mov edi, 0x4000
mov dword [ebp - 0x818], ecx
mov dword [ebp - 0x814], 0xf000
cmp dword [esi + 0x20], ecx
jbe 0x4b495a
nop
mov eax, dword [esi + 0x1c]
mov edx, dword [eax + ecx*4]
test edx, edx
js 0x4b4944
imul eax, edx, 0x98
add eax, dword [esi + 0x28]
mov ax, word [eax + 0x10]
and ax, word [ebp - 0x814]
cmp ax, di
jne 0x4b4944
lea eax, [ebp - 0x834]
mov ecx, esi
push eax
push edx
call fcn.004b7640
mov edi, eax
test edi, edi
jne 0x4b51c0
mov eax, dword [ebp - 0x830]
test eax, eax
je 0x4b51bb
push dword [ebp - 0x818]
mov ecx, esi
push eax
push dword [ebp - 0x834]
call fcn.004b3580
mov edi, eax
test edi, edi
jne 0x4b51c0
mov ecx, esi
call fcn.004b3500
mov edi, eax
test edi, edi
jne 0x4b51c0
mov ecx, dword [ebp - 0x818]
mov edi, 0x4000
inc ecx
mov dword [ebp - 0x818], ecx
cmp ecx, dword [esi + 0x20]
jb 0x4b48c0
mov edx, dword [ebp - 0x834]
mov eax, dword [esi + 0x1c]
mov eax, dword [eax + 8]
test eax, eax
js 0x4b51bb
imul ecx, eax, 0x98
mov eax, dword [esi + 0x28]
cmp dword [ecx + eax], 2
jne 0x4b51bb
push edx
mov dword [ebp - 4], 0xffffffff
call fcn.00588148
xor edx, edx
add esp, 4
cmp dword [esi + 0x20], edx
jbe 0x4b49e9
mov eax, dword [esi + 0x1c]
mov eax, dword [eax + edx*4]
test eax, eax
js 0x4b49e3
imul ecx, eax, 0x98
add ecx, dword [esi + 0x28]
mov edi, dword [ecx + 0x58]
mov eax, dword [ecx + 0x50]
cmp eax, edi
je 0x4b49bc
cmp eax, 1
jne 0x4b49b8
test edi, edi
je 0x4b49bc
mov byte [esi + 0x73], 1
mov ax, word [ecx + 0x10]
mov edi, 0xf000
and ax, di
mov edi, 0x4000
cmp ax, di
jne 0x4b49e3
cmp dword [ecx], 0
jge 0x4b49e3
cmp edx, dword [esi + 0xbc]
jae 0x4b4a99
inc edx
cmp edx, dword [esi + 0x20]
jb 0x4b4992
mov edi, dword [esi + 0x20]
xor edx, edx
test edi, edi
je 0x4b4a1b
mov ecx, 4
mov eax, edi
mul ecx
mov ecx, 0xffffffff
cmovb eax, ecx
push eax
call fcn.0058813f
add esp, 4
mov edx, eax
test edi, edi
je 0x4b4a1b
mov ecx, edi
or eax, 0xffffffff
mov edi, edx
rep stosd dword es:[edi], eax
xor ecx, ecx
cmp dword [esi + 0x20], ecx
jbe 0x4b4ab5
mov eax, dword [esi + 0x1c]
mov eax, dword [eax + ecx*4]
test eax, eax
js 0x4b4aab
imul eax, eax, 0x98
add eax, dword [esi + 0x28]
cmp dword [eax], 0
jl 0x4b4aab
cmp ecx, 2
je 0x4b4aab
mov eax, ecx
nop word [eax + eax]
lea edi, [eax*4]
mov eax, dword [esi + 0x1c]
mov eax, dword [edi + eax]
test eax, eax
js 0x4b4a90
imul eax, eax, 0x98
add eax, dword [esi + 0x28]
mov esi, dword [edi + edx]
cmp esi, 0xffffffff
mov dword [ebp - 0x824], esi
mov esi, dword [ebp - 0x854]
jne 0x4b4aa3
mov dword [edi + edx], ecx
mov eax, dword [eax]
test eax, eax
js 0x4b4aab
cmp eax, 2
je 0x4b4aab
cmp eax, ecx
jne 0x4b4a50
push edx
call fcn.00588148
add esp, 4
mov eax, 1
jmp 0x4b51d4
cmp dword [ebp - 0x824], ecx
je 0x4b4a90
inc ecx
cmp ecx, dword [esi + 0x20]
jb 0x4b4a26
push edx
call fcn.00588148
push 4
call fcn.0058813f
add esp, 8
mov dword [ebp - 0x840], eax
mov dword [ebp - 0x83c], 0
mov dword [ebp - 0x838], 3
mov byte [eax], 0
mov dword [ebp - 4], 5
mov dword [ebp - 0x834], 0
mov dword [ebp - 0x830], 0
xor ecx, ecx
mov byte [ebp - 4], 6
mov dword [ebp - 0x818], ecx
cmp dword [esi + 0x20], ecx
jbe 0x4b4c49
mov dword [ebp - 0x824], 0xa000
nop dword [eax]
mov eax, dword [esi + 0x1c]
mov edx, dword [eax + ecx*4]
test edx, edx
js 0x4b4c39
imul edi, edx, 0x98
add edi, dword [esi + 0x28]
mov ax, word [edi + 0x10]
and ax, word [ebp - 0x814]
cmp ax, word [ebp - 0x824]
jne 0x4b4c39
cmp dword [edi + 0x24], 0
ja 0x4b4c39
jb 0x4b4b68
cmp dword [edi + 0x20], 0x4000
ja 0x4b4c39
lea eax, [ebp - 0x834]
mov ecx, esi
push eax
push edx
call fcn.004b7640
test eax, eax
jne 0x4b4c33
mov eax, dword [ebp - 0x830]
test eax, eax
je 0x4b4c33
push eax
push dword [ebp - 0x834]
lea ecx, [ebp - 0x840]
call fcn.0046cc60
mov eax, dword [ebp - 0x830]
cmp dword [ebp - 0x83c], eax
jne 0x4b4c22
lea ecx, [esi + 0x40]
call fcn.00439780
push 0xc
call fcn.00587dd8
mov dword [ebp - 0x820], eax
mov byte [ebp - 4], 7
mov dword [eax], 0
mov eax, dword [ebp - 0x83c]
inc eax
push eax
call fcn.0058813f
mov edx, dword [ebp - 0x83c]
mov ecx, eax
mov eax, dword [ebp - 0x820]
add esp, 8
mov dword [eax + 4], edx
mov dword [eax + 8], edx
mov edx, dword [ebp - 0x840]
mov dword [eax], ecx
mov al, byte [edx]
lea edx, [edx + 1]
mov byte [ecx], al
lea ecx, [ecx + 1]
test al, al
jne 0x4b4bf8
mov byte [ebp - 4], 6
mov ecx, dword [esi + 0x44]
mov edx, dword [ebp - 0x820]
lea eax, [ecx + 1]
mov dword [esi + 0x44], eax
mov eax, dword [esi + 0x40]
mov dword [eax + ecx*4], edx
mov dword [edi + 8], ecx
mov ecx, esi
call fcn.004b3500
mov edi, eax
test edi, edi
jne 0x4b4ece
mov ecx, dword [ebp - 0x818]
inc ecx
mov dword [ebp - 0x818], ecx
cmp ecx, dword [esi + 0x20]
jb 0x4b4b20
xor ecx, ecx
mov dword [ebp - 0x858], ecx
cmp dword [esi + 0x38], ecx
jbe 0x4b4d0f
lea edx, [esi + 0x10]
mov dword [ebp - 0x820], edx
mov eax, dword [esi + 0x34]
mov eax, dword [eax + ecx*4]
mov edi, dword [eax + 4]
cmp edi, 1
jbe 0x4b4cff
mov eax, dword [eax]
mov ecx, edi
sub eax, 4
shr ecx, 1
mov dword [ebp - 0x818], eax
mov dword [ebp - 0x814], ecx
nop word [eax + eax]
push edx
push 0x4b3870
mov edx, ecx
mov ecx, eax
push edi
call fcn.0048b060
mov ecx, dword [ebp - 0x814]
lea edx, [esi + 0x10]
mov eax, dword [ebp - 0x818]
add esp, 0xc
sub ecx, 1
mov dword [ebp - 0x814], ecx
jne 0x4b4c90
mov esi, eax
nop
mov ecx, dword [esi + edi*4]
mov edx, 1
mov eax, dword [esi + 4]
push dword [ebp - 0x820]
mov dword [esi + edi*4], eax
dec edi
mov dword [esi + 4], ecx
mov ecx, esi
push 0x4b3870
push edi
call fcn.0048b060
add esp, 0xc
cmp edi, 1
ja 0x4b4cc0
mov esi, dword [ebp - 0x854]
mov edx, dword [ebp - 0x820]
mov ecx, dword [ebp - 0x858]
inc ecx
mov dword [ebp - 0x858], ecx
cmp ecx, dword [esi + 0x38]
jb 0x4b4c63
xor edi, edi
mov dword [ebp - 0x818], 0
mov dword [ebp - 0x814], 0
cmp dword [esi + 0x14], edi
jbe 0x4b4df7
nop
mov eax, dword [esi + 0x10]
mov edx, dword [eax + edi*4]
mov eax, dword [esi + 0x1c]
mov dword [ebp - 0x85c], edx
mov ecx, dword [edx]
imul ecx, dword [eax + ecx*4], 0x98
mov eax, dword [esi + 0x28]
mov eax, dword [ecx + eax + 8]
mov dword [ebp - 0x824], eax
test eax, eax
js 0x4b4ded
mov ecx, dword [edx + 4]
test ecx, ecx
js 0x4b4ded
mov eax, dword [esi + 0x40]
mov edx, dword [ebp - 0x824]
push dword [eax + edx*4]
push ecx
mov ecx, esi
call fcn.004b38c0
mov ecx, dword [ebp - 0x85c]
mov dword [ecx + 8], eax
mov ecx, dword [esi + 0x148]
test ecx, ecx
je 0x4b4ded
mov edx, dword [ebp - 0x814]
inc edx
mov eax, edx
mov dword [ebp - 0x814], edx
sub eax, dword [ebp - 0x818]
cmp eax, 0x400
jb 0x4b4ded
mov eax, dword [esi + 0x14]
mov dword [ebp - 0x870], eax
mov dword [ebp - 0x86c], 0
mov eax, dword [ecx]
mov dword [ebp - 0x818], edx
mov ecx, dword [eax + 0x10]
lea eax, [esi + 0x150]
push eax
lea eax, [ebp - 0x870]
push eax
push dword [esi + 0x148]
call ecx
mov dword [ebp - 0x824], eax
test eax, eax
jne 0x4b4ec8
inc edi
cmp edi, dword [esi + 0x14]
jb 0x4b4d30
push dword [ebp - 0x834]
call fcn.00588148
mov dword [ebp - 4], 0xffffffff
push dword [ebp - 0x840]
call fcn.00588148
xor al, al
xor edi, edi
add esp, 8
mov byte [ebp - 0x829], al
mov byte [ebp - 0x841], al
mov dword [ebp - 0x818], edi
cmp dword [esi + 0x20], edi
jbe 0x4b51b7
mov eax, dword [esi + 0x1c]
mov eax, dword [eax + edi*4]
test eax, eax
js 0x4b500b
imul eax, eax, 0x98
add eax, dword [esi + 0x28]
mov dword [ebp - 0x814], eax
cmp dword [eax + 0x58], 0
jne 0x4b500b
push 4
mov dword [ebp - 0x88c], 0xffffffff
mov dword [ebp - 0x888], 0xffffffff
mov byte [ebp - 0x884], 0
call fcn.0058813f
mov edx, eax
mov dword [ebp - 0x878], 3
xor ecx, ecx
mov dword [ebp - 0x824], edx
add esp, 4
mov dword [ebp - 0x880], edx
mov dword [ebp - 0x87c], ecx
mov byte [edx], cl
mov dword [ebp - 4], 8
mov dword [ebp - 0x890], edi
cmp edi, 7
jne 0x4b4eee
push edx
mov dword [ebp - 4], 0xffffffff
call fcn.00588148
jmp 0x4b5008
mov edi, dword [ebp - 0x824]
push dword [ebp - 0x834]
call fcn.00588148
push dword [ebp - 0x840]
call fcn.00588148
add esp, 8
mov eax, edi
jmp 0x4b51d4
mov eax, dword [ebp - 0x814]
mov esi, dword [ebp - 0x814]
mov eax, dword [eax + 0x20]
or eax, dword [esi + 0x24]
mov esi, dword [ebp - 0x854]
jne 0x4b4f1a
push edx
mov dword [ebp - 4], 0xffffffff
call fcn.00588148
jmp 0x4b5008
cmp edi, dword [esi + 0xbc]
jae 0x4b4fab
cmp edi, 0xb
jae 0x4b4f9e
mov edi, dword [edi*4 + 0x5c2a8c]
xor ecx, ecx
mov dword [ebp - 0x814], edi
cmp byte [edi], cl
je 0x4b4f85
nop
inc ecx
mov eax, ecx
mov dword [ebp - 0x85c], eax
cmp byte [edi + ecx], 0
jne 0x4b4f40
cmp eax, 3
jbe 0x4b4f85
inc eax
push eax
call fcn.0058813f
push dword [ebp - 0x824]
mov edi, eax
call fcn.00588148
mov ecx, dword [ebp - 0x85c]
mov edx, edi
mov edi, dword [ebp - 0x814]
add esp, 8
mov dword [ebp - 0x880], edx
mov dword [ebp - 0x878], ecx
mov dword [ebp - 0x87c], ecx
nop dword [eax + eax]
mov al, byte [edi]
lea edi, [edi + 1]
mov byte [edx], al
lea edx, [edx + 1]
test al, al
jne 0x4b4f90
mov byte [ebp - 0x829], 1
test ecx, ecx
jne 0x4b4fe1
jmp 0x4b4fb2
mov byte [ebp - 0x841], 1
push 0xa
lea ecx, [ebp - 0x880]
call fcn.0046c9a0
mov edi, dword [ebp - 0x880]
mov edx, dword [ebp - 0x87c]
mov ecx, dword [ebp - 0x818]
lea edx, [edx + edi]
call fcn.0046bf20
sub eax, edi
mov dword [ebp - 0x87c], eax
lea eax, [ebp - 0x890]
lea ecx, [esi + 0x10]
push eax
call fcn.004b81f0
mov dword [ebp - 4], 0xffffffff
push dword [ebp - 0x880]
call fcn.00588148
mov edi, dword [ebp - 0x818]
add esp, 4
inc edi
mov dword [ebp - 0x818], edi
cmp edi, dword [esi + 0x20]
jb 0x4b4e36
cmp byte [ebp - 0x829], 0
je 0x4b50ee
xor edi, edi
nop word [eax + eax]
inc edi
cmp byte [edi + str._SYS_], 0
jne 0x4b5030
lea eax, [edi + 1]
push eax
call fcn.0058813f
add esp, 4
mov dword [ebp - 0x840], eax
mov dword [ebp - 0x83c], edi
mov ecx, str._SYS_
mov dword [ebp - 0x838], edi
mov edx, eax
nop
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [edx], al
lea edx, [edx + 1]
test al, al
jne 0x4b5060
lea ecx, [esi + 0x4c]
mov dword [ebp - 4], 9
call fcn.00439780
push 0xc
call fcn.00587dd8
mov dword [ebp - 0x814], eax
mov byte [ebp - 4], 0xa
mov dword [eax], 0
lea eax, [edi + 1]
push eax
call fcn.0058813f
mov ecx, eax
add esp, 8
mov eax, dword [ebp - 0x814]
mov dword [eax + 4], edi
mov dword [eax + 8], edi
mov edi, dword [ebp - 0x840]
mov edx, edi
mov dword [eax], ecx
mov al, byte [edx]
lea edx, [edx + 1]
mov byte [ecx], al
lea ecx, [ecx + 1]
test al, al
jne 0x4b50b8
mov ecx, dword [esi + 0x50]
mov edx, dword [ebp - 0x814]
push edi
lea eax, [ecx + 1]
mov dword [esi + 0x50], eax
mov eax, dword [esi + 0x4c]
mov dword [ebp - 4], 0xffffffff
mov dword [eax + ecx*4], edx
mov dword [esi + 0x58], ecx
call fcn.00588148
add esp, 4
cmp byte [ebp - 0x841], 0
je 0x4b51b7
xor edi, edi
nop dword [eax]
inc edi
cmp byte [edi + 0x5cd8b0], 0
jne 0x4b5100
lea eax, [edi + 1]
push eax
call fcn.0058813f
add esp, 4
mov dword [ebp - 0x840], eax
mov dword [ebp - 0x83c], edi
mov ecx, 0x5cd8b0
mov dword [ebp - 0x838], edi
mov edx, eax
nop
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [edx], al
lea edx, [edx + 1]
test al, al
jne 0x4b5130
lea ecx, [esi + 0x4c]
mov dword [ebp - 4], 0xb
call fcn.00439780
push 0xc
call fcn.00587dd8
mov dword [ebp - 0x814], eax
mov byte [ebp - 4], 0xc
mov dword [eax], 0
lea eax, [edi + 1]
push eax
call fcn.0058813f
mov ecx, eax
add esp, 8
mov eax, dword [ebp - 0x814]
mov dword [eax + 4], edi
mov dword [eax + 8], edi
mov edi, dword [ebp - 0x840]
mov edx, edi
mov dword [eax], ecx
mov al, byte [edx]
lea edx, [edx + 1]
mov byte [ecx], al
lea ecx, [ecx + 1]
test al, al
jne 0x4b5188
mov ecx, dword [esi + 0x50]
mov edx, dword [ebp - 0x814]
push edi
lea eax, [ecx + 1]
mov dword [esi + 0x50], eax
mov eax, dword [esi + 0x4c]
mov dword [eax + ecx*4], edx
mov dword [esi + 0x5c], ecx
call fcn.00588148
add esp, 4
xor eax, eax
jmp 0x4b51d4
mov edi, 1
push dword [ebp - 0x834]
call fcn.00588148
add esp, 4
mov eax, edi
jmp 0x4b51d4
mov eax, ecx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00587d99
mov esp, ebp
pop ebp
ret 4
mov dword [ebp - 0x814], 0x7e5
lea eax, [ebp - 0x814]
push 0x5f79a8
push eax
call fcn.0058acc1
int3