Function at 0x412890
Capabilities:
Encode data using xor
Terminate process

Disassembly:
sub esp, 0x418
mov eax, dword [0x6621f4]
push ebx
push ebp
mov ebp, dword [esp + 0x424]
mov ecx, dword [eax + 0x34]
push esi
push edi
xor bl, bl
mov edx, dword [ecx + 0x3c]
mov dword [esp + 0x1c], 3
mov dword [esp + 0x24], edx
cmp dword [esp + 0x1c], 1
je 0x412ab7
mov eax, dword [esp + 0x24]
push 0x3f800000
push 0
push 3
mov ecx, dword [eax + 8]
push 3
push 0x400000c8
mov edx, dword [ecx]
call dword [edx + 0x74]
cmp eax, 3
mov dword [esp + 0x1c], eax
jne 0x412aae
mov eax, dword [0x649bf8]
mov esi, dword [0x649c2c]
xor eax, 0x2c43
xor esi, 0x7a04
add eax, ebp
add esi, ebp
mov dword [esp + 0x20], eax
xor ecx, ecx
mov dword [esp + 0x10], ecx
mov edx, 8
test byte [esp + 0x10], 1
je 0x412931
mov ax, word [esp + 0x10]
shr ax, 1
xor eax, 0x8408
mov dword [esp + 0x10], eax
jmp 0x41293a
shr word [esp + 0x10], 1
mov eax, dword [esp + 0x10]
dec edx
jne 0x412917
and eax, 0xffff
mov dword [esp + ecx*4 + 0x28], eax
inc ecx
cmp ecx, 0xff
jbe 0x41290e
xor eax, eax
xor edx, edx
mov ecx, 0xf
test al, 1
je 0x412965
mov edi, 1
shl edi, cl
or edx, edi
shr eax, 1
dec ecx
cmp ecx, 0xffffffff
jg 0x412958
mov edi, dword [0x64c46c]
mov dword [esp + 0x18], edx
mov eax, dword [esp + 0x18]
mov ecx, esi
sub ecx, ebp
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], ecx
xor ecx, ecx
test edi, edi
jbe 0x4129db
mov edx, dword [ecx*4 + 0x649ed0]
xor edx, 0xf91a
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
cmp eax, edx
jb 0x4129d6
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
add edx, 0x11f
cmp eax, edx
jae 0x4129db
mov eax, dword [esp + 0x14]
mov edx, esi
sub edx, eax
mov eax, dword [esp + 0x10]
add eax, edx
mov edx, dword [eax]
sub edx, ebp
mov dword [eax], edx
mov edi, dword [0x64c46c]
inc ecx
cmp ecx, edi
jb 0x41298d
mov eax, esi
xor ecx, ecx
mov edx, dword [esp + 0x18]
xor ebx, ebx
mov bl, byte [eax]
and edx, 0xff
xor edx, ebx
mov edx, dword [esp + edx*4 + 0x28]
mov ebx, dword [esp + 0x18]
shr ebx, 8
xor edx, ebx
inc eax
inc ecx
mov dword [esp + 0x18], edx
cmp ecx, 0x11f
jb 0x4129df
xor ecx, ecx
test edi, edi
jbe 0x412a5c
mov eax, dword [ecx*4 + 0x649ed0]
xor eax, 0xf91a
mov dword [esp + 0x10], eax
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
cmp edx, eax
jb 0x412a57
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
add eax, 0x11f
cmp edx, eax
jae 0x412a5c
mov edx, dword [esp + 0x14]
mov eax, esi
sub eax, edx
mov edx, dword [esp + 0x10]
add eax, edx
mov edx, dword [eax]
add edx, ebp
mov dword [eax], edx
mov edi, dword [0x64c46c]
inc ecx
cmp ecx, edi
jb 0x412a10
mov eax, dword [0x649c2c]
mov ecx, dword [esp + 0x18]
xor eax, 0x7a04
mov edx, ebp
and ecx, 0xffff
add edx, eax
lea esi, [ecx + edx - 0x841a]
call dword [esp + 0x20]
push 0x743c8d79
push 0x4ca11b
call esi
cmp eax, 1
sete bl
cmp bl, 1
jne 0x4128ba
mov eax, dword [0x649c24]
xor eax, 0x5897
add eax, ebp
call eax
cmp eax, 1
sete bl
cmp bl, 1
jne 0x4128ba
test bl, bl
jne 0x412ac9
cmp dword [esp + 0x1c], 1
jne 0x412adb
push 0
call fcn.0060a26d
cmp bl, 1
jne 0x412adb
pop edi
pop esi
mov al, bl
pop ebp
pop ebx
add esp, 0x418
ret
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x418
ret