Function at 0x40430c
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff28
push ebx
mov eax, 0x48428c
call fcn.0046328c
xor edx, edx
mov dword [ebp - 0x6c], edx
mov word [ebp - 0x7a], 0
mov ecx, dword [ebp + 0x1c]
shl ecx, 4
add ecx, 0x1f
test ecx, ecx
jns 0x40433b
add ecx, 0x1f
sar ecx, 5
shl ecx, 2
mov dword [ebp - 0x88], ecx
mov eax, dword [ebp - 0x88]
imul dword [ebp + 0x20]
add eax, 0x1400
mov dword [ebp - 0x88], eax
mov edx, dword [ebp - 0x88]
sar edx, 1
jns 0x404368
adc edx, 0
mov dword [ebp - 0x88], edx
mov ecx, dword [ebp - 0x88]
add ecx, ecx
push ecx
call fcn.004626b8
pop ecx
mov dword [ebp - 0x68], eax
mov dl, 1
mov eax, dword [0x44ec24]
call fcn.00405270
mov dword [ebp - 0x8c], eax
mov dl, 1
mov eax, dword [0x44ec24]
call fcn.00405270
mov dword [ebp - 0x90], eax
cmp dword [ebp + 0x18], 1
jne 0x40452d
mov ecx, dword [ebp + 0x14]
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp - 0x8c]
call fcn.00451afc
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x310], 0
jle 0x404838
cmp dword [ebp + 0x14], 0x2800
jle 0x404838
mov edx, 4
mov eax, dword [ebp - 0x8c]
call fcn.00451a48
lea edx, [ebp - 0xc4]
mov ecx, 0x14
mov eax, dword [ebp - 0x8c]
mov ebx, dword [eax]
call dword [ebx + 4]
mov edx, dword [ebp + 0x14]
sar edx, 1
jns 0x40440c
adc edx, 0
mov eax, dword [ebp - 0x8c]
call fcn.00451a48
lea edx, [ebp - 0xd8]
mov ecx, 0x14
mov eax, dword [ebp - 0x8c]
mov ebx, dword [eax]
call dword [ebx + 4]
mov eax, dword [ebp + 8]
cmp dword [eax + 0x310], 1
jne 0x4044a6
push 0x15
push 0
lea edx, [ebp - 0xb0]
push edx
call fcn.00462ebc
add esp, 0xc
mov ecx, dword [ebp + 8]
push dword [ecx + 0x314]
push 0x483552
lea eax, [ebp - 0xb0]
push eax
call fcn.00465ab0
add esp, 0xc
xor edx, edx
mov dword [ebp - 0x74], edx
mov ecx, dword [ebp - 0x74]
mov al, byte [ebp + ecx - 0xd8]
mov edx, 0x14
sub edx, dword [ebp - 0x74]
xor al, byte [ebp + edx - 0xb0]
mov ecx, dword [ebp - 0x74]
xor al, byte [ebp + ecx - 0xc4]
mov edx, dword [ebp - 0x74]
mov byte [ebp + edx - 0xd8], al
inc dword [ebp - 0x74]
cmp dword [ebp - 0x74], 0x14
jl 0x40446e
jmp 0x4044f0
mov eax, dword [ebp + 8]
cmp dword [eax + 0x310], 2
jne 0x4044f0
xor ecx, ecx
mov dword [ebp - 0x74], ecx
mov eax, 0x14
sub eax, dword [ebp - 0x74]
mov edx, dword [ebp + 8]
mov cl, byte [edx + eax + 0x318]
mov eax, dword [ebp - 0x74]
xor cl, byte [ebp + eax - 0xd8]
mov edx, dword [ebp - 0x74]
xor cl, byte [ebp + edx - 0xc4]
mov eax, dword [ebp - 0x74]
mov byte [ebp + eax - 0xd8], cl
inc dword [ebp - 0x74]
cmp dword [ebp - 0x74], 0x14
jl 0x4044b7
mov edx, dword [ebp + 0x14]
sar edx, 1
jns 0x4044fa
adc edx, 0
mov eax, dword [ebp - 0x8c]
call fcn.00451a48
lea edx, [ebp - 0xd8]
mov ecx, 0x14
mov eax, dword [ebp - 0x8c]
mov ebx, dword [eax]
call dword [ebx + 8]
xor edx, edx
mov eax, dword [ebp - 0x8c]
call fcn.00451a48
jmp 0x404838
cmp dword [ebp + 0x18], 2
je 0x40453d
cmp dword [ebp + 0x18], 3
jne 0x404838
mov dl, 1
mov eax, dword [0x44ec24]
call fcn.00405270
mov dword [ebp - 0x98], eax
lea edx, [ebp - 0x70]
mov ecx, 4
mov eax, dword [ebp + 0x10]
mov ebx, dword [eax]
call dword [ebx + 4]
mov ecx, dword [ebp + 0x14]
sub ecx, 4
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp - 0x98]
call fcn.00451afc
mov eax, dword [ebp + 8]
cmp dword [eax + 0x310], 0
jle 0x4046df
cmp dword [ebp + 0x14], 0x2800
jle 0x4046df
xor edx, edx
mov eax, dword [ebp - 0x98]
call fcn.00451a48
lea edx, [ebp - 0xc4]
mov ecx, 0x14
mov eax, dword [ebp - 0x98]
mov ebx, dword [eax]
call dword [ebx + 4]
mov edx, dword [ebp + 0x14]
sar edx, 1
jns 0x4045bd
adc edx, 0
sub edx, 4
mov eax, dword [ebp - 0x98]
call fcn.00451a48
lea edx, [ebp - 0xd8]
mov ecx, 0x14
mov eax, dword [ebp - 0x98]
mov ebx, dword [eax]
call dword [ebx + 4]
mov eax, dword [ebp + 8]
cmp dword [eax + 0x310], 1
jne 0x40465a
push 0x15
push 0
lea edx, [ebp - 0xb0]
push edx
call fcn.00462ebc
add esp, 0xc
mov ecx, dword [ebp + 8]
push dword [ecx + 0x314]
push 0x483555
lea eax, [ebp - 0xb0]
push eax
call fcn.00465ab0
add esp, 0xc
xor edx, edx
mov dword [ebp - 0x74], edx
mov ecx, dword [ebp - 0x74]
mov al, byte [ebp + ecx - 0xd8]
mov edx, 0x14
sub edx, dword [ebp - 0x74]
xor al, byte [ebp + edx - 0xb0]
mov ecx, dword [ebp - 0x74]
xor al, byte [ebp + ecx - 0xc4]
mov edx, dword [ebp - 0x74]
mov byte [ebp + edx - 0xd8], al
inc dword [ebp - 0x74]
cmp dword [ebp - 0x74], 0x14
jl 0x404622
jmp 0x4046a4
mov eax, dword [ebp + 8]
cmp dword [eax + 0x310], 2
jne 0x4046a4
xor ecx, ecx
mov dword [ebp - 0x74], ecx
mov eax, 0x14
sub eax, dword [ebp - 0x74]
mov edx, dword [ebp + 8]
mov cl, byte [edx + eax + 0x318]
mov eax, dword [ebp - 0x74]
xor cl, byte [ebp + eax - 0xd8]
mov edx, dword [ebp - 0x74]
xor cl, byte [ebp + edx - 0xc4]
mov eax, dword [ebp - 0x74]
mov byte [ebp + eax - 0xd8], cl
inc dword [ebp - 0x74]
cmp dword [ebp - 0x74], 0x14
jl 0x40466b
mov edx, dword [ebp + 0x14]
sar edx, 1
jns 0x4046ae
adc edx, 0
sub edx, 4
mov eax, dword [ebp - 0x98]
call fcn.00451a48
lea edx, [ebp - 0xd8]
mov ecx, 0x14
mov eax, dword [ebp - 0x98]
mov ebx, dword [eax]
call dword [ebx + 8]
xor edx, edx
mov eax, dword [ebp - 0x98]
call fcn.00451a48
mov edx, dword [ebp - 0x70]
inc edx
mov eax, dword [ebp - 0x8c]
mov ecx, dword [eax]
call dword [ecx]
mov eax, dword [ebp - 0x8c]
call fcn.00451a54
mov dword [ebp - 0x94], eax
mov eax, dword [ebp - 0x98]
call fcn.00451a54
push eax
mov edx, dword [ebp - 0x98]
push dword [edx + 4]
lea ecx, [ebp - 0x94]
push ecx
mov eax, dword [ebp - 0x8c]
push dword [eax + 4]
call fcn.0040fe78
add esp, 0x10
test eax, eax
je 0x404808
mov edx, dword [ebp - 0x98]
mov dword [ebp - 8], edx
cmp dword [ebp - 8], 0
je 0x404763
mov ecx, dword [ebp - 8]
mov eax, dword [ecx]
mov dword [ebp - 4], eax
mov word [ebp - 0x4c], 0x14
mov edx, 3
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
call dword [ecx - 4]
mov word [ebp - 0x4c], 8
mov edx, dword [ebp - 0x8c]
mov dword [ebp - 0x10], edx
cmp dword [ebp - 0x10], 0
je 0x404793
mov eax, dword [ebp - 0x10]
mov edx, dword [eax]
mov dword [ebp - 0xc], edx
mov word [ebp - 0x4c], 0x2c
mov edx, 3
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax]
call dword [ecx - 4]
mov word [ebp - 0x4c], 0x20
mov eax, dword [ebp - 0x90]
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], 0
je 0x4047c3
mov edx, dword [ebp - 0x18]
mov ecx, dword [edx]
mov dword [ebp - 0x14], ecx
mov word [ebp - 0x4c], 0x44
mov edx, 3
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax]
call dword [ecx - 4]
mov word [ebp - 0x4c], 0x38
push dword [ebp - 0x68]
call fcn.004624f0
pop ecx
mov word [ebp - 0x4c], 0x50
mov edx, 0x483558
lea eax, [ebp - 0x1c]
call fcn.0046e2b8
inc dword [ebp - 0x40]
mov eax, dword [eax]
call fcn.00435284
dec dword [ebp - 0x40]
lea eax, [ebp - 0x1c]
mov edx, 2
call fcn.0046e370
mov ecx, dword [ebp - 0x5c]
mov dword fs:[0], ecx
jmp 0x404a3b
mov eax, dword [ebp - 0x98]
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x24], 0
je 0x404838
mov edx, dword [ebp - 0x24]
mov ecx, dword [edx]
mov dword [ebp - 0x20], ecx
mov word [ebp - 0x4c], 0x68
mov edx, 3
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax]
call dword [ecx - 4]
mov word [ebp - 0x4c], 0x5c
xor edx, edx
mov eax, dword [ebp - 0x8c]
call fcn.00451a48
mov ecx, dword [ebp - 0x8c]
mov eax, dword [ecx + 4]
mov dword [ebp - 0x64], eax
mov edx, dword [ebp - 0x64]
mov cx, word [edx]
mov eax, dword [ebp - 0x68]
mov edx, dword [ebp - 0x6c]
mov word [eax + edx*2], cx
inc dword [ebp - 0x6c]
mov eax, dword [ebp - 0x8c]
call fcn.00451a54
sar eax, 1
jns 0x404876
adc eax, 0
mov dword [ebp - 0x80], eax
mov edx, dword [ebp - 0x80]
add edx, 0xfffffffd
mov dword [ebp - 0x84], edx
mov dword [ebp - 0x70], 1
mov ecx, dword [ebp - 0x70]
cmp ecx, dword [ebp - 0x84]
jge 0x404925
mov eax, dword [ebp - 0x64]
mov edx, dword [ebp - 0x70]
cmp word [eax + edx*2], 0
jne 0x4048fc
mov ecx, dword [ebp - 0x64]
mov eax, dword [ebp - 0x70]
cmp word [ecx + eax*2 + 2], 0
jne 0x4048fc
mov edx, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x70]
cmp word [edx + ecx*2 + 4], 0
je 0x4048fc
xor eax, eax
mov dword [ebp - 0x78], eax
jmp 0x4048e6
mov edx, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x70]
mov ax, word [edx + ecx*2 + 6]
mov edx, dword [ebp - 0x68]
mov ecx, dword [ebp - 0x6c]
mov word [edx + ecx*2], ax
inc dword [ebp - 0x6c]
inc dword [ebp - 0x78]
mov eax, dword [ebp - 0x64]
mov edx, dword [ebp - 0x70]
movzx ecx, word [eax + edx*2 + 4]
cmp ecx, dword [ebp - 0x78]
jg 0x4048cb
add dword [ebp - 0x70], 3
jmp 0x404913
mov eax, dword [ebp - 0x64]
mov edx, dword [ebp - 0x70]
mov cx, word [eax + edx*2]
mov eax, dword [ebp - 0x68]
mov edx, dword [ebp - 0x6c]
mov word [eax + edx*2], cx
inc dword [ebp - 0x6c]
inc dword [ebp - 0x70]
mov ecx, dword [ebp - 0x70]
cmp ecx, dword [ebp - 0x84]
jl 0x40489b
mov eax, dword [ebp - 0x70]
cmp eax, dword [ebp - 0x80]
jge 0x40494f
mov edx, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x70]
mov ax, word [edx + ecx*2]
mov edx, dword [ebp - 0x68]
mov ecx, dword [ebp - 0x6c]
mov word [edx + ecx*2], ax
inc dword [ebp - 0x6c]
inc dword [ebp - 0x70]
mov eax, dword [ebp - 0x70]
cmp eax, dword [ebp - 0x80]
jl 0x40492d
mov edx, dword [ebp - 0x6c]
cmp edx, dword [ebp - 0x88]
jle 0x404996
mov word [ebp - 0x4c], 0x74
mov edx, 0x48356b
lea eax, [ebp - 0x28]
call fcn.0046e2b8
inc dword [ebp - 0x40]
mov eax, dword [eax]
call fcn.00435284
dec dword [ebp - 0x40]
lea eax, [ebp - 0x28]
mov edx, 2
call fcn.0046e370
mov ecx, dword [ebp - 0x5c]
mov dword fs:[0], ecx
jmp 0x404a3b
mov ecx, dword [ebp - 0x6c]
add ecx, ecx
mov edx, dword [ebp - 0x68]
mov eax, dword [ebp - 0x90]
mov ebx, dword [eax]
call dword [ebx + 8]
xor eax, eax
mov dword [ebp - 0x6c], eax
xor edx, edx
mov eax, dword [ebp - 0x90]
call fcn.00451a48
mov edx, dword [ebp - 0x90]
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax]
call dword [ecx + 0x50]
mov edx, dword [ebp - 0x8c]
mov dword [ebp - 0x30], edx
cmp dword [ebp - 0x30], 0
je 0x4049f9
mov eax, dword [ebp - 0x30]
mov edx, dword [eax]
mov dword [ebp - 0x2c], edx
mov word [ebp - 0x4c], 0x8c
mov edx, 3
mov eax, dword [ebp - 0x30]
mov ecx, dword [eax]
call dword [ecx - 4]
mov word [ebp - 0x4c], 0x80
mov eax, dword [ebp - 0x90]
mov dword [ebp - 0x38], eax
cmp dword [ebp - 0x38], 0
je 0x404a29
mov edx, dword [ebp - 0x38]
mov ecx, dword [edx]
mov dword [ebp - 0x34], ecx
mov word [ebp - 0x4c], 0xa4
mov edx, 3
mov eax, dword [ebp - 0x38]
mov ecx, dword [eax]
call dword [ecx - 4]
mov word [ebp - 0x4c], 0x98
push dword [ebp - 0x68]
call fcn.004624f0
pop ecx
mov eax, dword [ebp - 0x5c]
mov dword fs:[0], eax
pop ebx
mov esp, ebp
pop ebp
ret