Function at 0x43c630
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x30
mov dword [esp + 0x18], 0x42414047
mov dword [esp + 0x1c], 0
mov word [esp + 0x20], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 9
ja 0x43c6c7
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov eax, dword [esp]
movzx edx, byte [esp + eax + 0x18]
lea esi, [ecx - 0x705ff7b5]
lea eax, [ecx + edx]
add eax, 0x8fa0084b
and esi, edx
mov edi, 0x705ff7b4
sub edi, ecx
or edi, edx
add edi, ecx
lea ecx, [esi + edi]
add ecx, 0x8fa0084c
mov edx, ecx
xor edx, eax
not ecx
and ecx, eax
add ecx, ecx
sub ecx, edx
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 0x14]
add al, 0xf3
mov ecx, dword [esp]
mov byte [esp + ecx + 0x18], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xa
jb 0x43c670
mov ebx, dword [esp + 0x18]
mov eax, dword [0x447858]
test eax, eax
je 0x43c71c
xor ecx, ecx
mov edx, dword [0x44785c]
nop
nop
nop
nop
cmp dword [edx + ecx*8], 0xa2f6bc1
je 0x43c6f0
inc ecx
cmp eax, ecx
jne 0x43c6e0
jmp 0x43c71c
mov eax, dword [edx + ecx*8 + 4]
cmp eax, ebx
je 0x43c71c
lea ecx, [esp + 0x10]
push ecx
push 0
push 0
push 1
push dword [ebp + 0xc]
push dword [ebp + 8]
push 6
push dword [0x447860]
push eax
call fcn.00438dd0
add esp, 0x24
mov ebx, eax
cmp ebx, 0xc0000023
jne 0x43ca46
push dword [esp + 0x10]
call fcn.004372e0
add esp, 4
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x18], 0x42414047
mov dword [esp + 0x1c], 0
mov word [esp + 0x20], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 9
ja 0x43c7c9
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp]
mov ecx, dword [esp]
movzx esi, byte [esp + ecx + 0x18]
lea ebx, [edx - 0x705ff7b5]
lea ecx, [edx + esi]
add ecx, 0x8fa0084b
and ebx, esi
mov edi, 0x705ff7b4
sub edi, edx
or edi, esi
add edi, edx
lea edx, [ebx + edi]
add edx, 0x8fa0084c
mov esi, edx
xor esi, ecx
not edx
and edx, ecx
add edx, edx
sub edx, esi
mov dword [esp + 0x14], edx
mov ecx, dword [esp + 0x14]
add cl, 0xf3
mov edx, dword [esp]
mov byte [esp + edx + 0x18], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0xa
jb 0x43c770
mov ebx, dword [esp + 0x18]
mov ecx, dword [0x447858]
test ecx, ecx
je 0x43c800
xor edx, edx
mov esi, dword [0x44785c]
mov edi, dword [esp + 0xc]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0xa2f6bc1
je 0x43c806
inc edx
cmp ecx, edx
jne 0x43c7f0
jmp 0x43c830
mov edi, dword [esp + 0xc]
jmp 0x43c830
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, ebx
je 0x43c830
lea edx, [esp + 0x10]
push edx
push eax
push edi
push 1
push dword [ebp + 0xc]
push dword [ebp + 8]
push 6
push dword [0x447860]
push ecx
call fcn.00438dd0
add esp, 0x24
mov ebx, eax
test ebx, ebx
js 0x43ca3d
mov ecx, dword [ebp + 0x18]
mov esi, dword [ebp + 0x14]
test esi, esi
je 0x43c91c
mov edx, dword [ebp + 0x10]
test edx, edx
je 0x43c915
mov eax, esi
mov esi, dword [edi + 0x10]
shr esi, 1
mov eax, dword [eax]
cmp eax, esi
jb 0x43c860
mov eax, esi
test eax, eax
je 0x43c909
mov dword [esp + 8], ebx
mov esi, edi
add esi, 0x14
mov ebx, eax
and ebx, 3
mov dword [esp + 4], eax
mov edi, eax
je 0x43c898
nop
nop
dec edi
movzx ecx, word [esi]
xor eax, eax
test cx, cx
setne al
lea esi, [esi + eax*2]
mov word [edx], cx
add edx, 2
dec ebx
jne 0x43c880
cmp dword [esp + 4], 4
mov ebx, dword [esp + 8]
mov ecx, dword [ebp + 0x18]
jb 0x43c909
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, word [esi]
xor ecx, ecx
test ax, ax
setne cl
mov word [edx], ax
lea eax, [esi + ecx*2]
movzx ecx, word [esi + ecx*2]
xor ebx, ebx
test cx, cx
setne bl
mov word [edx + 2], cx
lea ecx, [eax + ebx*2]
movzx eax, word [eax + ebx*2]
xor ebx, ebx
test ax, ax
setne bl
mov word [edx + 4], ax
lea eax, [ecx + ebx*2]
movzx ecx, word [ecx + ebx*2]
xor ebx, ebx
test cx, cx
setne bl
lea esi, [eax + ebx*2]
mov word [edx + 6], cx
add edx, 8
add edi, 0xfffffffc
jne 0x43c8b0
mov ebx, dword [esp + 8]
mov ecx, dword [ebp + 0x18]
mov word [edx], 0
mov edi, dword [esp + 0xc]
mov esi, dword [ebp + 0x14]
mov eax, dword [edi + 0x10]
shr eax, 1
mov dword [esi], eax
test ecx, ecx
je 0x43c925
mov eax, dword [edi + 4]
mov dword [ecx], eax
cmp dword [ebp + 0x20], 0
je 0x43ca3d
mov eax, dword [ebp + 0x1c]
test eax, eax
je 0x43ca31
mov dword [esp + 8], ebx
mov ecx, dword [ebp + 0x20]
mov ebx, dword [ecx]
mov edx, dword [esp + 0xc]
mov ecx, dword [edx + 0xc]
cmp ebx, ecx
jb 0x43c950
mov ebx, ecx
mov esi, dword [edx + 8]
add esi, edx
mov ecx, ebx
shr ecx, 2
mov edx, ebx
and edx, 0xfffffffc
mov edi, eax
add eax, edx
add edx, esi
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
mov dword [esp + 4], ebx
mov ecx, ebx
and ecx, 3
mov esi, ecx
not esi
or esi, 1
add esi, ecx
shr ecx, 1
mov ebx, edx
mov edi, eax
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
mov ecx, esi
inc ecx
mov ebx, dword [esp + 8]
je 0x43ca31
mov edi, dword [esp + 4]
and edi, 2
add edx, edi
add eax, edi
mov ebx, ecx
and ebx, 7
je 0x43c9c6
mov dword [esp + 4], ecx
xor edi, edi
nop
movzx ecx, byte [edx + edi]
mov byte [eax + edi], cl
inc edi
cmp ebx, edi
jne 0x43c9b0
add edx, edi
add eax, edi
mov ecx, dword [esp + 4]
sub ecx, edi
cmp esi, 7
mov ebx, dword [esp + 8]
jb 0x43ca31
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, ecx
movzx ecx, byte [edx + esi]
mov byte [eax + esi], cl
movzx ecx, byte [edx + esi + 1]
mov byte [eax + esi + 1], cl
movzx ecx, byte [edx + esi + 2]
mov byte [eax + esi + 2], cl
movzx ecx, byte [edx + esi + 3]
mov byte [eax + esi + 3], cl
movzx ecx, byte [edx + esi + 4]
mov byte [eax + esi + 4], cl
movzx ecx, byte [edx + esi + 5]
mov byte [eax + esi + 5], cl
movzx ecx, byte [edx + esi + 6]
mov byte [eax + esi + 6], cl
movzx ecx, byte [edx + esi + 7]
mov byte [eax + esi + 7], cl
mov ecx, edi
add esi, 8
cmp edi, esi
jne 0x43c9e0
mov edi, dword [esp + 0xc]
mov eax, dword [edi + 0xc]
mov ecx, dword [ebp + 0x20]
mov dword [ecx], eax
push edi
call fcn.00437380
add esp, 4
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret