Function at 0x43f070
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x28
mov ebx, ecx
mov dword [esp + 4], 0
mov eax, dword [ecx + 8]
mov dword [esp + 0x24], eax
mov dword [esp + 8], 0x989b9a9d
mov byte [esp + 0xc], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 4
ja 0x43f0f6
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 8]
mov edx, eax
xor edx, 0xcede9c5b
and eax, 0xcede9c5b
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
mov ecx, eax
not ecx
and ecx, 0xc7
and eax, 0x38
sub eax, ecx
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 5
jb 0x43f0b0
mov eax, dword [esp + 8]
mov ecx, dword [0x4505bc]
test ecx, ecx
je 0x43f14e
xor edx, edx
mov edi, dword [0x4505c0]
nop
nop
nop
nop
cmp dword [edi + edx*8], 0x633c81d
je 0x43f120
inc edx
cmp ecx, edx
jne 0x43f110
jmp 0x43f14e
mov ecx, dword [edi + edx*8 + 4]
cmp ecx, eax
je 0x43f14e
lea eax, [esp + 0x24]
lea edx, [esp + 4]
push 4
push 0x3000
push eax
push 0
push edx
push 0xffffffffffffffff
push 6
push dword [0x4505c4]
push ecx
call fcn.004403a0
add esp, 0x24
test eax, eax
js 0x43f1ad
mov ecx, dword [esp + 0x3c]
push 0
push 0
push dword [ebx + 8]
push dword [esp + 0x10]
push dword [ebx + 4]
push dword [ebx]
call fcn.0043e3a0
mov ecx, eax
xor eax, eax
mov edx, 0
cmp ecx, 0xbfffffff
ja 0x43f267
mov ecx, dword [esp + 4]
mov esi, dword [ebx + 8]
add esi, ecx
sub esi, dword [esp + 0x44]
xor eax, eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x1c], esi
cmp esi, ecx
jbe 0x43f267
mov ebp, dword [esp + 0x48]
mov esi, dword [esp + 0x14]
mov dword [esp + 0x18], ebx
jmp 0x43f1f1
xor eax, eax
xor edx, edx
jmp 0x43f332
mov edi, edx
not edi
and edi, 2
mov ecx, edx
shr ecx, 2
mov esi, edx
and esi, 0x7ffffffc
or esi, 2
shr edx, 1
and edx, 1
imul edx, esi
and ebx, 2
lea edx, [ebx + edx*2]
add eax, edx
imul ecx, edi
lea esi, [eax + ecx*4]
inc esi
xor eax, eax
mov edx, 0
cmp esi, dword [esp + 0x1c]
jae 0x43f267
test ebp, ebp
je 0x43f1fb
cmp byte [ebp], 0x3f
je 0x43f206
movzx eax, byte [esi]
mov ecx, dword [esp + 0x40]
cmp al, byte [ecx]
jne 0x43f1e3
cmp dword [esp + 0x44], 2
jb 0x43f249
lea eax, [esi - 2]
mov edx, 1
mov ebx, 2
jmp 0x43f23c
movzx ecx, byte [esi + edx]
mov edi, dword [esp + 0x40]
cmp cl, byte [edi + edx]
jne 0x43f1b6
inc edx
dec eax
add ebx, 2
cmp dword [esp + 0x44], edx
je 0x43f249
test ebp, ebp
je 0x43f220
cmp byte [ebp + edx], 0x3f
jne 0x43f220
jmp 0x43f231
test esi, esi
je 0x43f263
sub esi, dword [esp + 0x14]
mov edx, esi
sar edx, 0x1f
mov eax, dword [esp + 0x18]
add esi, dword [eax]
adc edx, dword [eax + 4]
mov eax, esi
jmp 0x43f267
xor eax, eax
xor edx, edx
mov dword [esp + 0x20], 0
mov dword [esp + 8], 0x989b9a9d
mov byte [esp + 0xc], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 4
ja 0x43f2d7
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov esi, dword [esp]
movzx esi, byte [esp + esi + 8]
mov edi, ecx
xor edi, 0xcede9c5b
and ecx, 0xcede9c5b
lea ecx, [edi + ecx*2]
xor ecx, esi
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x10]
mov esi, ecx
not esi
and esi, 0xc7
and ecx, 0x38
sub ecx, esi
mov esi, dword [esp]
mov byte [esp + esi + 8], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 5
jb 0x43f290
mov ecx, dword [0x4505bc]
test ecx, ecx
je 0x43f332
mov esi, dword [esp + 8]
xor edi, edi
mov ebx, dword [0x4505c0]
nop
nop
nop
cmp dword [ebx + edi*8], 0x44caaeb6
je 0x43f300
inc edi
cmp ecx, edi
jne 0x43f2f0
jmp 0x43f332
mov ecx, dword [ebx + edi*8 + 4]
cmp ecx, esi
je 0x43f332
lea esi, [esp + 0x20]
lea edi, [esp + 4]
push 0x8000
push esi
push edi
push 0xffffffffffffffff
push 4
push dword [0x4505c4]
push ecx
mov esi, eax
mov edi, edx
call fcn.004403a0
mov edx, edi
mov eax, esi
add esp, 0x1c
add esp, 0x28
pop esi
pop edi
pop ebx
pop ebp
ret 0x10