Function at 0x412340
Capabilities:
Encode data using xor

Disassembly:
or al, 0x51
mov edx, dword [ebp + 8]
push edx
call fcn.0043f450
add esp, 0xc
pop ebp
ret
push ebp
mov ebp, esp
sub esp, 0x4c
mov eax, dword [0x614394]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
movzx eax, byte [0x614e6c]
test eax, eax
je 0x413298
sldt word [eax]
xor dword [ebp + 0x12], esi
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x41235f
cmp eax, ebx
je 0x4123d4
movzx edi, byte [ecx]
movzx esi, byte [edx]
sub esi, edi
jne 0x4123c6
sub eax, 1
add ecx, 1
add edx, 1
cmp eax, ebx
je 0x4123d4
movzx edi, byte [ecx]
movzx esi, byte [edx]
sub esi, edi
jne 0x4123c6
sub eax, 1
add ecx, 1
add edx, 1
cmp eax, ebx
je 0x4123d4
movzx edi, byte [ecx]
movzx esi, byte [edx]
sub esi, edi
jne 0x4123c6
sub eax, 1
add ecx, 1
add edx, 1
cmp eax, ebx
je 0x4123d4
movzx ecx, byte [ecx]
movzx esi, byte [edx]
sub esi, ecx
je 0x4123d4
cmp esi, ebx
mov eax, 1
jg 0x4123d6
or eax, 0xffffffff
jmp 0x4123d6
xor eax, eax
cmp eax, ebx
jne 0x412911
mov dword [esp + 0x58], 1
jmp 0x412911
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x18]
movzx ecx, ax
add edx, ecx
cmp edx, dword [esp + 0x114]
mov dword [esp + 0x18], edx
jb 0x4122eb
cmp dword [esp + 0x44], 1
je 0x41bb9f
mov ecx, dword [esp + 0x98]
mov eax, ecx
and eax, 2
mov dword [esp + 0x3c], eax
je 0x412968
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0x1c]
lea edx, [eax + 0x52]
cmp edx, dword [esi + 0x28]
jae 0x412968
mov edx, dword [esp + 0x10]
mov eax, dword [eax + edx + 0x4e]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
lea edx, [edx + eax + 0x4e]
mov eax, ecx
shr eax, 7
and eax, 1
and ecx, 4
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], eax
mov dword [esp + 0x40], ecx
mov ebp, 0x10093a3f
mov edi, 0x10093a3c
mov esi, 0x10093a38
jne 0x413953
mov cl, byte [esp + 0x98]
test cl, 8
je 0x4129e8
mov ecx, dword [esp + 0x1c]
add edx, 2
cmp edx, dword [ecx + 0x28]
ja 0x413953
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
movzx edx, word [edx + ecx]
xor ecx, ecx
cmp eax, ebx
setne cl
add ecx, 1
imul edx, ecx
mov ecx, dword [esp + 0x18]
lea edx, [ecx + edx + 2]
mov cl, byte [esp + 0x98]
mov dword [esp + 0x18], edx
test cl, 0x10
jne 0x413953
cmp dword [esp + 0x58], ebx
je 0x413953
cmp dword [esp + 0x5c], ebx
je 0x412a07
cmp dword [esp + 0x50], ebx
jne 0x412a2a
cmp dword [esp + 0x48], ebx
je 0x412a13
cmp dword [esp + 0x30], ebx
jne 0x412a2a
cmp dword [esp + 0x2c], ebx
je 0x413953
cmp dword [esp + 0xe8], ebx
je 0x413953
cmp dword [esp + 0x48], ebx
je 0x412a36
cmp dword [esp + 0x30], ebx
jne 0x412a9b
cmp dword [esp + 0x2c], ebx
je 0x412a45
cmp dword [esp + 0xe8], ebx
jne 0x412a9b
cmp dword [esp + 0x9c], ebx
jne 0x413953
mov edx, dword [esp + 0xa0]
or edx, dword [esp + 0xa4]
jne 0x413953
mov edx, dword [esp + 0xa8]
or edx, dword [esp + 0xac]
jne 0x413953
mov edx, dword [esp + 0xb0]
or edx, dword [esp + 0xb4]
jne 0x413953
cmp dword [esp + 0xb8], ebx
jne 0x413953
test cl, 0x20
je 0x413953
push 0x3c
lea eax, [esp + 0x1a8]
push ebx
push eax
mov dword [esp + 0x1a4], ebp
mov dword [esp + 0x1a8], edi
mov dword [esp + 0x1ac], 0x10093a34
call fcn.0044d239
push 0x3c
lea ecx, [esp + 0x1fc]
push ebx
push ecx
mov dword [esp + 0x1f8], edi
mov dword [esp + 0x1fc], edi
mov dword [esp + 0x200], 0x10093a2c
call fcn.0044d239
push 0x38
lea edx, [esp + 0x254]
push ebx
push edx
mov dword [esp + 0x24c], ebp
mov dword [esp + 0x250], esi
mov dword [esp + 0x254], 0x10093a24
mov dword [esp + 0x258], 0x10093a1c
call fcn.0044d239
push 0x3c
lea eax, [esp + 0x2a4]
push ebx
push eax
mov dword [esp + 0x2a0], esi
mov dword [esp + 0x2a4], edi
mov dword [esp + 0x2a8], 0x10093a2c
call fcn.0044d239
push 0x3c
lea ecx, [esp + 0x2f8]
push ebx
push ecx
mov dword [esp + 0x2f4], esi
mov dword [esp + 0x2f8], ebp
mov dword [esp + 0x2fc], 0x10093a14
call fcn.0044d239
push 0x3c
lea edx, [esp + 0x34c]
push ebx
push edx
mov dword [esp + 0x348], ebx
mov dword [esp + 0x34c], ebx
mov dword [esp + 0x350], ebx
push eax
add eax, dword [eax]
add al, ch
cwde
cmpsb byte [esi], byte es:[edi]
add eax, dword [eax]
add esp, 0x48
push 0x3c
lea eax, [esp + 0x15e8]
push ebx
push eax
mov dword [esp + 0x15e4], ebp
mov dword [esp + 0x15e8], edi
mov dword [esp + 0x15ec], 0x10093a34
call fcn.0044d239
push 0x3c
lea ecx, [esp + 0x163c]
push ebx
push ecx
mov dword [esp + 0x1638], esi
mov dword [esp + 0x163c], edi
mov dword [esp + 0x1640], 0x10093a2c
call fcn.0044d239
push 0x3c
lea edx, [esp + 0x1690]
push ebx
push edx
mov dword [esp + 0x168c], 0x10093a10
mov dword [esp + 0x1690], esi
mov dword [esp + 0x1694], 0x100939f4
call fcn.0044d239
push 0x3c
push ebx
lea eax, [esp + 0x16e8]
mov dword [esp + 0x16dc], esi
mov dword [esp + 0x16e0], edi
mov dword [esp + 0x16e4], 0x10093a2c
push eax
call fcn.0044d239
push 0x3c
lea ecx, [esp + 0x1738]
push ebx
push ecx
mov dword [esp + 0x1734], ebp
mov dword [esp + 0x1738], esi
mov dword [esp + 0x173c], 0x100939ec
call fcn.0044d239
push 0x3c
lea edx, [esp + 0x178c]
push ebx
push edx
mov dword [esp + 0x1788], esi
mov dword [esp + 0x178c], ebp
mov dword [esp + 0x1790], 0x10093a14
call fcn.0044d239
add esp, 0x48
push 0x3c
lea eax, [esp + 0x1798]
push ebx
push eax
mov dword [esp + 0x1794], ebx
mov dword [esp + 0x1798], ebx
mov dword [esp + 0x179c], ebx
call fcn.0044d239
mov ecx, dword [0x614ea0]
fdiv dword [edx - 1]
pop es
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
aas
inc ecx
push esi
dec esp
popal
arpl word [ecx + 0x45], di
popal
jo 0x4139bc
je 0x4139da
outsd dx, dword [esi]
inc ebx
outsd dx, dword [esi]
outsb dx, byte [esi]
imul sp, word [edi + 0x40], 0x6550
jb 0x4139c0
inc ebp
popal
jo 0x4139d0
insd dword es:[edi], dx
inc eax
inc eax
add byte [eax], al
sub byte [eax + ebx*8], dl
jb 0x41398d
inc dword [edi]
pop es
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
aas
inc ecx
push esi
inc ebp
popal
jo 0x4139ee
je 0x413a0c
outsd dx, dword [esi]
inc ebx
outsd dx, dword [esi]
outsb dx, byte [esi]
imul sp, word [edi + 0x40], 0x6550
jb 0x4139f2
inc ebp
popal
jo 0x413a02
insd dword es:[edi], dx
inc eax
inc eax
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
sub byte [eax + ebx*8], dl
add byte [eax], al
add byte [eax], al
add byte [eax], ch
adc al, 0xd8
jb 0x4139c5
inc dword [edi]
pop es
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [esi], ch
aas
add byte [esi], ch
aas
inc ecx
push esi
push esp
push 0x50647269
push eax
popal
jb 0x413a52
jns 0x413a25
popal
jo 0x413a30
je fcn.00413a4e
outsd dx, dword [esi]
inc ebx
outsd dx, dword [esi]
outsb dx, byte [esi]
imul sp, word [edi + 0x40], 0x6550
jb 0x413a34
inc eax
push eax
jb 0x413a34
jb 0x413a34
inc ebp
popal
jo 0x413a44
insd dword es:[edi], dx
inc eax
inc eax
add byte [eax], al
add byte [eax], al
add byte [eax], al
sub byte [eax + ebx*8], dl
adc al, 0xd8
jb 0x413a05
inc dword [edi]
pop es
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
aas
add byte [eax], al
add byte [eax], al
add byte [esi], ch
aas
inc ecx
push esi
dec edi
outsb dx, byte [esi]
push ebx
je 0x413a89
jo 0x413a5f
popal
insb byte es:[edi], dx
add byte [eax], al
add byte [eax], al
sub byte [eax + ebx*8], dl
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [esi], ch
aas
push 0x65
arpl word [eax + eax*2 + 0x56], si
add byte [eax], al
fidiv dword [edx + 0x7ff72da]
sahf
mov dl, 0xda
jb 0x413a8d
inc dword [edi]
pop es
add byte [eax], al
xchg edx, eax
mov dl, 0xda
jb 0x413a95
inc dword [edi]
add byte [ebx - 0x3ca2e73c], al