Function at 0x47e040
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x30
movzx ebx, byte [esp + 0x54]
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x48]
mov esi, dword [esp + 0x44]
mov edi, dword [0x594180]
xor edi, esp
mov dword [esp + 0x2c], edi
mov dword [esp + 0x24], esi
mov dword [esp + 0x28], edx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], eax
movzx ebp, bl
neg bl
mov byte [esp + 3], bl
neg ebp
mov eax, 0xe9d34d19
mov esi, 0xffffffff
jmp 0x47e108
movzx eax, byte [esp + 0x20]
mov ecx, eax
neg cl
shrx ecx, esi, ecx
not ecx
mov edx, ecx
and edx, 0x1828946
mov edi, 0xfe7d76b9
bzhi edi, edi, eax
or edi, edx
mov ebx, dword [esp + 4]
mov edx, dword [ebx]
xor edi, edx
xor edi, 0x1828946
and edi, edx
xor ecx, ebp
bzhi eax, ecx, eax
or eax, edi
mov dword [ebx], eax
mov eax, dword [0x597dc0]
lea ecx, [eax + 1]
imul ecx, eax
not ecx
or ecx, 0xfffffffe
cmp ecx, 0xffffffff
sete cl
mov eax, 0xe08b183c
mov edi, 0x862d4772
cmove eax, edi
cmp dword [0x597dc4], 0xa
mov edx, 0xe08b183c
cmovge eax, edx
setl dl
xor dl, cl
cmovne eax, edi
cmp eax, 0xe7885325
jg 0x47e140
cmp eax, 0xb6deec8a
jg 0x47e1d0
cmp eax, 0x9dc3e007
jg 0x47e253
cmp eax, 0x862d4772
je 0x47e30f
cmp eax, 0x9ace8c79
jne 0x47e108
mov eax, 0x3b13cd33
jmp 0x47e108
cmp eax, 0x443170d3
jle 0x47e210
cmp eax, 0x52056042
jg 0x47e27b
cmp eax, 0x443170d4
je 0x47e319
cmp eax, 0x4c5e5b1f
jne 0x47e108
mov ebx, dword [esp + 4]
mov eax, dword [ebx]
mov ecx, dword [esp + 0x10]
xor ecx, eax
andn eax, ecx, eax
mov ecx, dword [esp + 0xc]
not ecx
mov edx, ebp
not edx
or edx, ecx
not edx
or edx, eax
mov dword [ebx], edx
add ebx, 4
mov edi, dword [esp + 0x14]
mov eax, edi
sub eax, ebx
movzx ecx, byte [esp + 3]
push eax
push ecx
push ebx
call fcn.00562890
add esp, 0xc
cmp dword [esp + 0x20], 0
mov eax, 0xf178c2d9
mov ecx, 0x9dc3e008
cmove eax, ecx
mov dword [esp + 4], edi
jmp 0x47e108
cmp eax, 0xbd078987
jg 0x47e29b
cmp eax, 0xb6deec8b
je 0x47e08f
cmp eax, 0xba70484d
jne 0x47e108
mov eax, dword [esp + 0x18]
cmp eax, 2
mov eax, 0x443170d4
mov ecx, 0x3b13cd33
cmovb eax, ecx
jmp 0x47e108
cmp eax, 0xf178c2d8
jg 0x47e2e0
cmp eax, 0xe7885326
je 0x47e33a
cmp eax, 0xe9d34d19
jne 0x47e108
lea ecx, [esp + 0x24]
lea eax, [esp + 0x1c]
push eax
call fcn.0047dd00
test al, al
mov eax, 0xe7885326
mov ecx, 0x9ace8c79
cmovne eax, ecx
jmp 0x47e108
cmp eax, 0x9dc3e008
je 0x47e372
cmp eax, 0xae27a660
jne 0x47e108
mov eax, dword [esp + 8]
mov dword [esp + 0x18], eax
mov eax, 0xba70484d
jmp 0x47e108
cmp eax, 0x52056043
je 0x47e384
cmp eax, 0x5f85f61d
jne 0x47e108
mov eax, 0x52056043
jmp 0x47e108
cmp eax, 0xbd078988
je 0x47e3b8
cmp eax, 0xe08b183c
jne 0x47e108
xor eax, eax
sub al, byte [esp + 0x20]
shrx ecx, esi, eax
mov edi, dword [esp + 4]
mov eax, dword [edi]
not eax
or eax, ecx
not ecx
not eax
mov edx, ebp
not edx
or edx, ecx
not edx
or edx, eax
mov dword [edi], edx
mov eax, 0xb6deec8b
jmp 0x47e108
cmp eax, 0xf178c2d9
jne 0x47e480
mov eax, dword [0x597dc0]
lea ecx, [eax + 1]
imul ecx, eax
mov eax, ecx
xor eax, 0xfffffffe
test eax, ecx
sete cl
mov eax, 0xe08b183c
mov edi, 0xb6deec8b
jmp 0x47e0ee
mov eax, 0x9dc3e008
jmp 0x47e108
mov eax, dword [0x597dc0]
lea ecx, [eax + 1]
imul ecx, eax
mov eax, ecx
xor eax, 0xfffffffe
test eax, ecx
sete cl
mov eax, 0x5f85f61d
mov edi, 0x52056043
jmp 0x47e3a4
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
movzx eax, byte [esp + 0x28]
shlx eax, esi, eax
mov dword [esp + 0xc], eax
not eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ecx
mov dword [esp + 4], edx
cmp edx, ecx
mov eax, 0x4c5e5b1f
mov ecx, 0xbd078988
cmove eax, ecx
jmp 0x47e108
mov eax, 0xae27a660
mov dword [esp + 8], 0
jmp 0x47e108
mov eax, dword [0x597dc0]
lea ecx, [eax + 1]
imul ecx, eax
not ecx
or ecx, 0xfffffffe
cmp ecx, 0xffffffff
sete cl
mov eax, 0x5f85f61d
mov edi, 0xbef99002
cmove eax, edi
cmp dword [0x597dc4], 0xa
mov edx, 0x5f85f61d
jmp 0x47e0fd
movzx ecx, byte [esp + 0x20]
mov eax, 0xdc836d38
bzhi eax, eax, ecx
neg cl
shrx ecx, esi, ecx
not ecx
mov edi, dword [esp + 0xc]
not edi
mov edx, ebp
not edx
or edx, edi
mov edi, edx
not edi
xor edi, ecx
and ecx, 0x237c92c7
or eax, ecx
mov ebx, dword [esp + 0x10]
mov ecx, ebx
not ecx
mov esi, ebp
mov ebp, ecx
and ebp, 0x537614db
and ebx, 0xac89eb24
or ebx, ebp
mov ebp, eax
xor ebp, 0x8c816920
xor eax, 0x237c92c7
or ecx, eax
and eax, 0x537614db
and ebp, 0xac89eb24
or ebp, eax
xor ebp, ebx
not ecx
or ecx, ebp
mov ebp, esi
mov esi, 0xffffffff
mov ebx, dword [esp + 4]
mov eax, dword [ebx]
not ecx
not eax
or eax, ecx
mov ecx, eax
not ecx
andn edx, edx, edi
mov edi, eax
and edi, 0x7f74064f
and ecx, 0x808bf9b0
or ecx, edi
mov edi, edx
not edi
or eax, edi
and edi, 0x7f74064f
and edx, 0x808bf9b0
or edx, edi
xor edx, ecx
not eax
or eax, edx
mov dword [ebx], eax
mov eax, 0xae27a660
mov dword [esp + 8], 1
jmp 0x47e108
cmp eax, 0x3b13cd33
jne 0x47e108
mov ecx, dword [esp + 0x2c]
xor ecx, esp
call fcn.0055d8e5
add esp, 0x30
pop esi
pop edi
pop ebx
pop ebp
ret