Function at 0x40780c
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffff748
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x8b8], ebx
mov dword [ebp - 0x8b4], ebx
mov dword [ebp - 0x8b0], ebx
mov dword [ebp - 0x8ac], ebx
mov dword [ebp - 0x854], ebx
mov dword [ebp - 0x850], ebx
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
call fcn.00403428
mov eax, dword [ebp - 8]
call fcn.00403428
lea edi, [ebp - 0x34]
xor eax, eax
push ebp
push 0x407ff7
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x1c]
call fcn.004030d4
push 0
push 0
push 4
push 0
push 3
push 0x80000000
push dword [ebp - 4]
push 0x408010
push dword [ebp - 8]
push 0x40801c
lea eax, [ebp - 0x850]
mov edx, 4
call fcn.00403334
mov eax, dword [ebp - 0x850]
call fcn.00403438
push eax
call fcn.0040450c
mov dword [0x411610], eax
cmp dword [0x411610], 0xffffffff
je 0x407fa7
mov eax, edi
mov edx, 0xe1
call fcn.004077d0
test al, al
je 0x407fa7
xor ebx, ebx
jmp 0x407902
mov eax, edi
mov edx, esi
call fcn.004077d0
test al, al
je 0x407fa7
cmp dword [edi + 4], 0x3ed
jne 0x407902
mov ebx, dword [edi + 0x10]
jmp 0x40790a
mov esi, dword [edi + 8]
cmp esi, 0xffffffff
jne 0x4078e3
mov eax, dword [0x411610]
push eax
call fcn.004044fc
test ebx, ebx
je 0x407fa7
push 0
push 0
push 4
push 0
push 3
push 0x80000000
push dword [ebp - 4]
push 0x408010
push dword [ebp - 8]
push 0x40802c
lea eax, [ebp - 0x854]
mov edx, 4
call fcn.00403334
mov eax, dword [ebp - 0x854]
call fcn.00403438
push eax
call fcn.0040450c
mov esi, eax
cmp esi, 0xffffffff
je 0x407fa7
xor ecx, ecx
mov edx, ebx
mov eax, esi
call fcn.004065ec
inc eax
je 0x407fa7
lea eax, [ebp - 0x835]
xor ecx, ecx
mov edx, 0x801
call fcn.004026e4
lea edx, [ebp - 0x835]
mov ecx, 0x801
mov eax, esi
call fcn.00404f74
push esi
call fcn.004044fc
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x835]
mov ecx, 0x801
mov edx, 0x800
call fcn.004065f8
mov edx, dword [ebp - 0x10]
mov eax, 0x40803c
call fcn.00403504
mov ebx, eax
mov edx, dword [ebp - 0x10]
mov eax, 0x408054
call fcn.00403504
mov edi, eax
xor eax, eax
mov dword [ebp - 0x14], eax
lea eax, [ebp - 0x18]
call fcn.004030d4
test bx, bx
jbe 0x407e4e
test di, di
jbe 0x407e4e
movzx esi, bx
test esi, esi
jb 0x407c40
inc esi
lea ebx, [ebp - 0x835]
cmp byte [ebx], 0xb
jne 0x407c38
cmp byte [ebx + 1], 0
jne 0x407c38
lea eax, [ebp - 0x858]
mov dl, byte [ebx + 2]
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x858]
lea eax, [ebp - 0x85c]
call fcn.00402628
lea eax, [ebp - 0x860]
mov dl, byte [ebx + 3]
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x860]
lea eax, [ebp - 0x85c]
mov cl, 2
call fcn.004025f8
lea edx, [ebp - 0x85c]
lea eax, [ebp - 0x864]
call fcn.00402628
lea eax, [ebp - 0x860]
mov dl, byte [ebx + 4]
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x860]
lea eax, [ebp - 0x864]
mov cl, 3
call fcn.004025f8
lea edx, [ebp - 0x864]
lea eax, [ebp - 0x86c]
call fcn.00402628
lea eax, [ebp - 0x860]
mov dl, byte [ebx + 5]
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x860]
lea eax, [ebp - 0x86c]
mov cl, 4
call fcn.004025f8
lea edx, [ebp - 0x86c]
lea eax, [ebp - 0x874]
call fcn.00402628
lea eax, [ebp - 0x860]
mov dl, byte [ebx + 6]
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x860]
lea eax, [ebp - 0x874]
mov cl, 5
call fcn.004025f8
lea edx, [ebp - 0x874]
lea eax, [ebp - 0x87c]
call fcn.00402628
lea eax, [ebp - 0x860]
mov dl, byte [ebx + 7]
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x860]
lea eax, [ebp - 0x87c]
mov cl, 6
call fcn.004025f8
lea edx, [ebp - 0x87c]
lea eax, [ebp - 0x884]
call fcn.00402628
lea eax, [ebp - 0x860]
mov dl, byte [ebx + 8]
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x860]
lea eax, [ebp - 0x884]
mov cl, 7
call fcn.004025f8
lea edx, [ebp - 0x884]
lea eax, [ebp - 0x890]
call fcn.00402628
lea eax, [ebp - 0x860]
mov dl, byte [ebx + 9]
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x860]
lea eax, [ebp - 0x890]
mov cl, 8
call fcn.004025f8
lea edx, [ebp - 0x890]
lea eax, [ebp - 0x89c]
call fcn.00402628
lea eax, [ebp - 0x860]
mov dl, byte [ebx + 0xa]
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x860]
lea eax, [ebp - 0x89c]
mov cl, 9
call fcn.004025f8
lea edx, [ebp - 0x89c]
lea eax, [ebp - 0x8a8]
call fcn.00402628
lea eax, [ebp - 0x860]
mov dl, byte [ebx + 0xb]
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x860]
lea eax, [ebp - 0x8a8]
mov cl, 0xa
call fcn.004025f8
lea eax, [ebp - 0x8a8]
mov edx, 0x408060
xor ecx, ecx
mov cl, byte [eax]
inc ecx
call fcn.00402674
jne 0x407c38
xor eax, eax
mov al, byte [ebx + 0xe]
xor edx, edx
mov dl, byte [ebx + 0xf]
shl edx, 8
add eax, edx
xor edx, edx
mov dl, byte [ebx + 0x10]
shl edx, 0x10
add eax, edx
xor edx, edx
mov dl, byte [ebx + 0x11]
shl edx, 0x18
add eax, edx
mov dword [ebp - 0x14], eax
jmp 0x407c40
inc ebx
dec esi
jne 0x407a0c
movzx esi, di
test esi, esi
jb 0x407e4e
inc esi
xor edi, edi
lea ebx, [ebp - 0x835]
cmp byte [ebx], 9
jne 0x407e45
cmp byte [ebx + 1], 0
jne 0x407e45
lea eax, [ebp - 0x858]
mov dl, byte [ebx + 2]
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x858]
lea eax, [ebp - 0x85c]
call fcn.00402628
lea eax, [ebp - 0x860]
mov dl, byte [ebx + 3]
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x860]
lea eax, [ebp - 0x85c]
mov cl, 2
call fcn.004025f8
lea edx, [ebp - 0x85c]
lea eax, [ebp - 0x864]
call fcn.00402628
lea eax, [ebp - 0x860]
mov dl, byte [ebx + 4]
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x860]
lea eax, [ebp - 0x864]
mov cl, 3
call fcn.004025f8
lea edx, [ebp - 0x864]
lea eax, [ebp - 0x86c]
call fcn.00402628
lea eax, [ebp - 0x860]
mov dl, byte [ebx + 5]
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x860]
lea eax, [ebp - 0x86c]
mov cl, 4
call fcn.004025f8
lea edx, [ebp - 0x86c]
lea eax, [ebp - 0x874]
call fcn.00402628
lea eax, [ebp - 0x860]
mov dl, byte [ebx + 6]
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x860]
lea eax, [ebp - 0x874]
mov cl, 5
call fcn.004025f8
lea edx, [ebp - 0x874]
lea eax, [ebp - 0x87c]
call fcn.00402628
lea eax, [ebp - 0x860]
mov dl, byte [ebx + 7]
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x860]
lea eax, [ebp - 0x87c]
mov cl, 6
call fcn.004025f8
lea edx, [ebp - 0x87c]
lea eax, [ebp - 0x884]
call fcn.00402628
lea eax, [ebp - 0x860]
mov dl, byte [ebx + 8]
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x860]
lea eax, [ebp - 0x884]
mov cl, 7
call fcn.004025f8
lea edx, [ebp - 0x884]
lea eax, [ebp - 0x890]
call fcn.00402628
lea eax, [ebp - 0x860]
mov dl, byte [ebx + 9]
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x860]
lea eax, [ebp - 0x890]
mov cl, 8
call fcn.004025f8
lea eax, [ebp - 0x890]
mov edx, 0x40806c
xor ecx, ecx
mov cl, byte [eax]
inc ecx
call fcn.00402674
jne 0x407e45
xor eax, eax
mov al, byte [ebx + 0xc]
xor edx, edx
mov dl, byte [ebx + 0xd]
shl edx, 8
add ax, dx
mov ebx, eax
lea eax, [ebp - 0x18]
call fcn.004030d4
test bx, bx
jbe 0x407e4e
mov si, 1
lea eax, [ebp - 0x8ac]
lea edx, [edi + 0xd]
movzx ecx, si
add edx, ecx
mov dl, byte [ebp + edx - 0x835]
call fcn.004031ec
mov edx, dword [ebp - 0x8ac]
lea eax, [ebp - 0x18]
call fcn.0040327c
inc esi
dec bx
jne 0x407e15
jmp 0x407e4e
inc edi
inc ebx
dec esi
jne 0x407c54
cmp dword [ebp - 0x14], 0
je 0x407fa7
mov eax, dword [ebp - 0x18]
call fcn.00403274
test eax, eax
je 0x407fa7
push 0xa
mov eax, dword [ebp - 8]
call fcn.00406598
lea ecx, [ebp - 0x840]
mov edx, dword [ebp - 0x14]
call fcn.004076f8
mov byte [ebp - 0x1d], 0
mov eax, dword [ebp - 0x18]
call fcn.00403274
mov esi, eax
sub esi, 2
jb 0x407f61
inc esi
mov edi, 2
mov eax, edi
and eax, 1
test eax, eax
jne 0x407f59
xor ebx, ebx
mov eax, dword [ebp - 0x18]
mov al, byte [eax + edi - 2]
add al, 0xd0
sub al, 0xa
jae 0x407edd
lea eax, [ebp - 0x8b0]
mov edx, dword [ebp - 0x18]
mov dl, byte [edx + edi - 2]
call fcn.004031ec
mov eax, dword [ebp - 0x8b0]
call fcn.00406598
shl eax, 4
add ebx, eax
jmp 0x407efe
mov eax, dword [ebp - 0x18]
mov al, byte [eax + edi - 2]
add al, 0x9f
sub al, 6
jae 0x407efe
mov eax, dword [ebp - 0x18]
movzx eax, byte [eax + edi - 2]
movzx eax, byte [eax + 0x4100cb]
shl eax, 4
add ebx, eax
mov eax, dword [ebp - 0x18]
mov al, byte [eax + edi - 1]
add al, 0xd0
sub al, 0xa
jae 0x407f2c
lea eax, [ebp - 0x8b4]
mov edx, dword [ebp - 0x18]
mov dl, byte [edx + edi - 1]
call fcn.004031ec
mov eax, dword [ebp - 0x8b4]
call fcn.00406598
add ebx, eax
jmp 0x407f4a
mov eax, dword [ebp - 0x18]
mov al, byte [eax + edi - 1]
add al, 0x9f
sub al, 6
jae 0x407f4a
mov eax, dword [ebp - 0x18]
movzx eax, byte [eax + edi - 1]
movzx eax, byte [eax + 0x4100cb]
add ebx, eax
xor eax, eax
mov al, byte [ebp - 0x1d]
mov byte [ebp + eax - 0x84b], bl
inc byte [ebp - 0x1d]
inc edi
dec esi
jne 0x407e9d
movzx esi, byte [ebp - 0x1d]
sub esi, 2
sub esi, 2
jb 0x407f9c
inc esi
lea ebx, [ebp - 0x849]
lea edi, [ebp - 0x83e]
lea eax, [ebp - 0x8b8]
mov dl, byte [ebx]
xor dl, byte [edi]
call fcn.004031ec
mov edx, dword [ebp - 0x8b8]
lea eax, [ebp - 0x1c]
call fcn.0040327c
inc edi
inc ebx
dec esi
jne 0x407f7a
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x1c]
call fcn.00403128
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x407ffe
lea eax, [ebp - 0x8b8]
mov edx, 4
call fcn.004030f8
lea eax, [ebp - 0x854]
mov edx, 2
call fcn.004030f8
lea eax, [ebp - 0x1c]
mov edx, 2
call fcn.004030f8
lea eax, [ebp - 0x10]
call fcn.004030d4
lea eax, [ebp - 8]
mov edx, 2
call fcn.004030f8
ret