Function at 0x43e590
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [esp + 8]
sub esp, 0x60
test eax, eax
je 0x43e68b
mov ecx, dword [esp + 0x64]
mov edx, dword [ecx + 0x7e60]
cmp edx, 2
jne 0x43e5be
add esp, 0x60
mov dword [esp + 8], eax
mov dword [esp + 4], ecx
jmp 0x43e6a0
cmp edx, 3
jne 0x43e68b
push esi
push edi
push eax
push ecx
lea ecx, [esp + 0x10]
call fcn.0043d9b0
lea ecx, [esp + 8]
call fcn.0043db30
xor edi, edi
cmp dword [esp + 0x34], edi
jbe 0x43e60a
xor esi, esi
jmp 0x43e5f0
mov eax, dword [esp + 0xc]
push dword [esi + eax + 0x18]
call fcn.004669ec
inc edi
lea esi, [esi + 0x28]
add esp, 4
cmp edi, dword [esp + 0x34]
jb 0x43e5f0
push dword [esp + 0xc]
call fcn.004669ec
push dword [esp + 0x1c]
call fcn.004669ec
push dword [esp + 0x18]
call fcn.004669ec
mov ecx, dword [esp + 0x34]
add esp, 0xc
xor esi, esi
test ecx, ecx
je 0x43e660
xor edi, edi
push ebx
mov eax, dword [esp + 0x18]
mov ebx, dword [edi + eax + 4]
test ebx, ebx
je 0x43e657
mov ecx, ebx
call fcn.004521d0
push 0x28
push ebx
call fcn.004669d5
mov ecx, dword [esp + 0x34]
add esp, 8
inc esi
add edi, 0x1c
cmp esi, ecx
jb 0x43e635
pop ebx
push dword [esp + 0x14]
call fcn.004669ec
mov esi, dword [esp + 0x28]
add esp, 4
test esi, esi
je 0x43e689
mov ecx, esi
call fcn.00457810
push 0x338
push esi
call fcn.004669d5
add esp, 8
pop edi
pop esi
add esp, 0x60
ret 8
push ebp
lea ebp, [esp - 0x129c]
mov eax, 0x129c
call fcn.00466a00
push 0xffffffffffffffff
push 0x47b5e5
mov eax, dword fs:[0]
push eax
sub esp, 0x68
mov eax, dword [0x48d1f4]
xor eax, ebp
mov dword [ebp + 0x1298], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, dword [ebp + 0x12a4]
lea ecx, [ebp + 0x4c]
mov edi, dword [ebp + 0x12a8]
xor eax, eax
mov dword [ebp - 0x10], ebx
mov dword [ebp + 0x4c], 0x47d694
mov dword [ebp + 0x50], 0x47d694
mov dword [ebp + 0x54], 0x47d694
mov dword [ebp + 0x58], 0x47d694
mov dword [ebp + 0x5c], 0x47d694
mov dword [ebp + 0x60], 0x47d694
mov dword [ebp + 0x64], 0x47d694
mov dword [ebp + 0x68], 0x47d694
mov dword [ebp + 0x6c], eax
mov dword [ebp + 0x70], eax
mov dword [ebp + 0x74], eax
mov dword [ebp + 0x78], eax
mov dword [ebp + 0x7c], eax
mov dword [ebp + 0x80], eax
mov dword [ebp + 0x84], eax
mov dword [ebp + 0x88], eax
mov dword [ebp + 0x8c], eax
mov dword [ebp + 0x90], eax
mov dword [ebp + 0x94], 0x90
call fcn.00458680
mov eax, dword [ebx + 0x222c]
mov esi, dword [ebx]
mov dword [ebp - 0x44], eax
mov eax, dword [ebx + 0x33b0]
add eax, dword [ebx + 0x7e70]
mov esi, dword [esi + 0x10]
mov ecx, esi
push 0
push 0
push eax
mov byte [ebx + 0x7e6b], 1
call dword [0x47d2b8]
mov ecx, ebx
call esi
push 0
push 0
push 0
push 1
mov ecx, ebx
call fcn.0040de50
mov eax, dword [ebx]
push 2
push 0
push 0
mov esi, dword [eax + 0x10]
mov ecx, esi
call dword [0x47d2b8]
mov ecx, ebx
call esi
mov eax, dword [ebx]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x47d2b8]
mov ecx, ebx
call esi
mov ebx, eax
mov dword [ebp - 0x14], edx
push edx
push ebx
push edi
mov dword [ebp - 0x40], ebx
mov dword [ebp - 0x3c], edx
call fcn.0043efa0
mov edi, dword [ebp - 0x10]
push 0x14
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x38], 0
lea ecx, [edi + 0x5780]
mov dword [ebp - 0x1c], 0
call fcn.0042e000
lea ecx, [edi + 0x67f0]
mov byte [edi + 0x5790], 1
push 2
call fcn.0042dc70
push 0
push 0x47d8f4
push 0
push 0
push 0
push 0
mov ecx, edi
call fcn.004093d0
mov eax, dword [edi]
push 0
push 0
push 0
mov esi, dword [eax + 0x10]
mov ecx, esi
call dword [0x47d2b8]
mov ecx, edi
call esi
mov eax, dword [ebp - 0x20]
xor esi, esi
shl eax, 9
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x58], esi
mov dword [ebp - 0x50], esi
mov dword [ebp - 0x4c], esi
mov byte [ebp - 0x48], 0
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x54], eax
test eax, eax
je 0x43e8a6
mov edi, eax
cmp eax, 0x20
ja 0x43e87f
mov edi, 0x20
push edi
push 0
call fcn.0046a903
mov esi, eax
add esp, 8
mov dword [ebp - 0x30], esi
test esi, esi
jne 0x43e89d
mov ecx, 0x49d17c
call fcn.004213d0
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x58], esi
mov dword [ebp - 0x50], edi
push eax
push 0
push esi
mov dword [ebp - 4], 0
call fcn.00468da0
mov edi, dword [ebp - 0x14]
add esp, 0xc
mov dword [ebp - 0x2c], 0xfffffff
test edi, edi
jl 0x43eaaf
jg 0x43e8d5
test ebx, ebx
je 0x43eaaf
call fcn.004576b0
test edi, edi
ja 0x43e913
jb 0x43e8e8
cmp ebx, 0x200
jae 0x43e913
mov esi, ebx
mov eax, 0x200
sub eax, esi
push eax
lea eax, [ebp + 0x1098]
add eax, esi
push 0
push eax
call fcn.00468da0
add esp, 0xc
mov dword [ebp - 0x28], 0
xor edx, edx
mov dword [ebp - 0x14], edx
jmp 0x43e927
add ebx, 0xfffffe00
mov esi, 0x200
mov dword [ebp - 0x28], ebx
adc edi, 0xffffffff
mov dword [ebp - 0x14], edi
mov ebx, dword [ebp - 0x10]
lea ecx, [ebp + 0x1098]
push esi
push ecx
mov eax, dword [ebx]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x47d2b8]
mov ecx, ebx
call esi
mov eax, dword [ebp - 0x24]
lea edx, [ebp + 0x1099]
mov ecx, dword [ebp - 0x30]
lea edi, [ebp + 0x1098]
shl eax, 9
mov ebx, edx
add ecx, eax
mov esi, 0x80
sub edi, ecx
sub ebx, ecx
lea eax, [ecx + 2]
jmp 0x43e970
movzx ecx, byte [edx - 1]
lea edx, [edx + 4]
xor byte [eax - 2], cl
lea eax, [eax + 4]
movzx ecx, byte [edx - 4]
xor byte [eax - 5], cl
movzx ecx, byte [edi + eax - 4]
xor byte [eax - 4], cl
movzx ecx, byte [ebx + eax - 4]
xor byte [eax - 3], cl
sub esi, 1
jne 0x43e970
push 0x200
lea eax, [ebp + 0x1098]
push eax
push 0xffffffffffffffff
call fcn.0041c570
mov esi, dword [ebp - 0x18]
mov byte [ebp + esi + 0x98], al
shr eax, 8
mov byte [ebp + esi + 0x99], al
add esi, 2
mov dword [ebp - 0x18], esi
cmp esi, 0x1000
jne 0x43ea4b
mov ebx, dword [ebp - 0x10]
mov eax, dword [ebx]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x47d2b8]
mov ecx, ebx
call esi
mov ecx, dword [ebp - 0x10]
mov ebx, eax
push 2
push 0
push 0
mov ecx, dword [ecx]
mov edi, edx
mov esi, dword [ecx + 0x10]
mov ecx, esi
call dword [0x47d2b8]
mov ecx, dword [ebp - 0x10]
call esi
mov esi, dword [ebp - 0x10]
lea eax, [ebp + 0x98]
push 0x1000
push eax
mov ecx, esi
call fcn.00428c10
mov esi, dword [esi]
push 0
push edi
push ebx
mov esi, dword [esi + 0x10]
mov ecx, esi
call dword [0x47d2b8]
mov ecx, dword [ebp - 0x10]
call esi
push 0x1000
lea eax, [ebp + 0x98]
push eax
push dword [ebp - 0x2c]
call fcn.0041c570
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x18], 0
mov ebx, dword [ebp - 0x38]
movzx ecx, bl
or ecx, 0
jne 0x43ea7f
mov eax, dword [ebp - 0x44]
cmp byte [eax + 0x714c], cl
jne 0x43ea7f
push dword [ebp - 0x3c]
mov eax, dword [ebp - 0x1c]
mov ecx, ebx
push dword [ebp - 0x40]
shld eax, ecx, 9
push eax
shl ecx, 9
push ecx
push 0x47fff8
call fcn.00459ba0
mov eax, dword [ebp - 0x24]
add ebx, 1
mov edi, dword [ebp - 0x14]
adc dword [ebp - 0x1c], 0
inc eax
cmp eax, dword [ebp - 0x20]
mov dword [ebp - 0x38], ebx
mov ebx, dword [ebp - 0x28]
sbb esi, esi
and esi, eax
mov dword [ebp - 0x24], esi
test edi, edi
jg 0x43e8d5
jl 0x43eaaf
test ebx, ebx
jne 0x43e8d5
mov ebx, dword [ebp - 0x10]
push 2
push 0
push 0
mov eax, dword [ebx]
mov esi, dword [eax + 0x10]
mov ecx, esi
call dword [0x47d2b8]
mov ecx, ebx
call esi
mov esi, dword [ebp - 0x18]
lea eax, [ebp + 0x98]
push esi
push eax
mov ecx, ebx
call fcn.00428c10
push esi
lea eax, [ebp + 0x98]
push eax
push dword [ebp - 0x2c]
call fcn.0041c570
push dword [ebp - 0x34]
mov edi, dword [ebp - 0x30]
mov ecx, ebx
push edi
mov esi, eax
call fcn.00428c10
push dword [ebp - 0x34]
push edi
push esi
call fcn.0041c570
mov esi, dword [ebx]
not eax
push 0
push dword [ebp - 0x3c]
mov dword [ebx + 0x67f0], 2
push dword [ebp - 0x40]
mov esi, dword [esi + 0x10]
mov ecx, esi
mov dword [ebx + 0x67f4], eax
call dword [0x47d2b8]
mov ecx, ebx
call esi
lea ecx, [ebp - 0x74]
call fcn.00441570
push 8
push str.Protect
lea ecx, [ebp - 0x74]
mov byte [ebp - 4], 1
call fcn.00441890
push dword [ebp - 0x20]
lea ecx, [ebp - 0x74]
call fcn.00441780
push dword [ebp - 0x1c]
mov esi, dword [ebp - 0x38]
lea ecx, [ebp - 0x74]
push esi
call fcn.004417e0
lea eax, [ebx + 0x67a8]
push eax
lea ecx, [ebp - 0x74]
call fcn.00441670
mov eax, dword [ebp - 0x20]
mov ecx, ebx
push 0
push 0x47d8f4
shl eax, 8
push 0
add eax, esi
push 0
add eax, eax
push eax
push 0
call fcn.004093d0
mov eax, dword [ebx]
push 2
push 0
push 0
mov esi, dword [eax + 0x10]
mov ecx, esi
call dword [0x47d2b8]
mov ecx, ebx
call esi
mov eax, dword [ebp - 0x44]
cmp byte [eax + 0x714c], 0
jne 0x43ebc3
push str._b_b_b_b
call fcn.0041c520
add esp, 4
xor eax, eax
mov dword [ebp], 0x47d694
lea ecx, [ebp]
mov dword [ebp + 4], 0x47d694
mov dword [ebp + 8], 0x47d694
mov dword [ebp + 0xc], 0x47d694
mov dword [ebp + 0x10], 0x47d694
mov dword [ebp + 0x14], 0x47d694
mov dword [ebp + 0x18], 0x47d694
mov dword [ebp + 0x1c], 0x47d694
mov dword [ebp + 0x20], eax
mov dword [ebp + 0x24], eax
mov dword [ebp + 0x28], eax
mov dword [ebp + 0x2c], eax
mov dword [ebp + 0x30], eax
mov dword [ebp + 0x34], eax
mov dword [ebp + 0x38], eax
mov dword [ebp + 0x3c], eax
mov dword [ebp + 0x40], eax
mov dword [ebp + 0x44], eax
mov dword [ebp + 0x48], 0x91
call fcn.00458680
mov eax, dword [ebp - 0x74]
mov byte [ebp - 4], 2
test eax, eax
je 0x43ec50
cmp byte [ebp - 0x64], 0
je 0x43ec47
push dword [ebp - 0x6c]
push eax
call fcn.00454020
mov eax, dword [ebp - 0x74]
push eax
call fcn.0046a8f3
add esp, 4
test edi, edi
je 0x43ec5d
push edi
call fcn.0046a8f3
add esp, 4
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x1298]
xor ecx, ebp
call fcn.004669f1
lea esp, [ebp + 0x129c]
pop ebp
ret 8