Function at 0x43e78c
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffc0
mov eax, 0x4d43f8
push ebx
push esi
push edi
call fcn.004af9f0
mov word [ebp - 0x18], 8
lea edx, [ebp - 4]
push edx
call fcn.00447cec
pop ecx
inc dword [ebp - 0xc]
mov word [ebp - 0x18], 0x14
xor esi, esi
push 0x80000000
mov eax, dword [ebp + 0xc]
push eax
lea edx, [ebp - 4]
push edx
call fcn.00447d40
add esp, 0xc
test al, al
je 0x43e824
lea ecx, [ebp - 4]
push ecx
call fcn.00447eb0
pop ecx
mov dword [ebp - 0x30], eax
mov ebx, dword [ebp - 0x30]
push ebx
call fcn.004aeb78
pop ecx
mov esi, eax
test esi, esi
je 0x43e815
mov al, byte [ebp + 0x10]
test al, al
je 0x43e807
push ebx
push esi
lea edx, [ebp - 4]
push edx
call fcn.00447e3c
add esp, 0xc
jmp 0x43e815
push ebx
push esi
lea ecx, [ebp - 4]
push ecx
call fcn.00447e00
add esp, 0xc
lea eax, [ebp - 4]
push eax
call fcn.00447de4
pop ecx
jmp 0x43e8d0
mov edx, dword [0x4c04b4]
mov dword [ebp - 0x2c], edx
mov ecx, dword [ebp + 0xc]
push ecx
mov eax, dword [ebp - 0x2c]
push eax
call fcn.0043dca0
add esp, 8
test al, al
je 0x43e8d0
mov edx, dword [ebp - 0x2c]
push edx
call fcn.0043de2c
pop ecx
mov dword [ebp - 0x30], eax
mov ebx, dword [ebp - 0x30]
push ebx
call fcn.004aeb78
pop ecx
mov esi, eax
test esi, esi
je 0x43e8c6
mov dword [ebp - 0x34], 0x4d42f5
mov al, byte [ebp + 0x10]
test al, al
je 0x43e882
push 1
push ebx
push esi
mov edx, dword [ebp - 0x2c]
push edx
call fcn.0043ddc8
add esp, 0x10
jmp 0x43e892
push 0
push ebx
push esi
mov ecx, dword [ebp - 0x2c]
push ecx
call fcn.0043ddc8
add esp, 0x10
xor eax, eax
xor ebx, ebx
mov dword [ebp - 0x38], eax
mov edi, esi
mov eax, dword [ebp - 0x34]
push eax
call fcn.004af66c
pop ecx
push eax
mov eax, ebx
pop edx
mov ecx, edx
xor edx, edx
div ecx
mov ebx, edx
mov eax, dword [ebp - 0x34]
mov al, byte [eax + ebx]
xor byte [edi], al
inc edi
inc dword [ebp - 0x38]
inc ebx
mov edx, dword [ebp - 0x38]
cmp edx, 0x20
jl 0x43e89b
mov ecx, dword [ebp - 0x2c]
push ecx
call fcn.0043ddc0
pop ecx
test esi, esi
jne 0x43e913
mov eax, dword [ebp + 0xc]
push eax
push 0x4d4304
push 0x234
push 0x4d42fd
call fcn.0043d7b8
add esp, 0x10
xor eax, eax
lea edx, [ebp - 4]
push eax
dec dword [ebp - 0xc]
push 2
push edx
call fcn.00447d1c
add esp, 8
pop eax
mov edx, dword [ebp - 0x28]
mov dword fs:[0], edx
jmp 0x43eae1
cmp word [esi], 0x4d42
jne 0x43e91e
mov ebx, esi
jmp 0x43e94d
mov eax, dword [esi]
push eax
call fcn.004aeb78
pop ecx
mov ebx, eax
test ebx, ebx
je 0x43e946
mov eax, dword [ebp - 0x30]
lea edx, [esi + 4]
add eax, 0xfffffffc
push eax
push edx
push ebx
call fcn.0044723c
add esp, 0xc
mov ecx, dword [esi]
mov dword [ebp - 0x30], ecx
push esi
call fcn.004ae9b0
pop ecx
lea edi, [ebx + 0xe]
mov al, byte [0x4d44b8]
test al, al
je 0x43e98e
push 0
mov edx, dword [ebp - 0x30]
push edx
push ebx
mov ecx, dword [ebp + 8]
push ecx
call fcn.0043eae8
add esp, 0x10
push eax
lea eax, [ebp - 4]
dec dword [ebp - 0xc]
push 2
push eax
call fcn.00447d1c
add esp, 8
pop eax
mov edx, dword [ebp - 0x28]
mov dword fs:[0], edx
jmp 0x43eae1
mov ecx, dword [edi + 4]
mov dword [ebp - 0x3c], ecx
mov word [ebp - 0x18], 0x14
mov eax, dword [edi + 8]
mov dword [ebp - 0x40], eax
push 0
push 1
push 1
mov edx, dword [ebp - 0x40]
push edx
mov ecx, dword [ebp - 0x3c]
push ecx
mov eax, dword [ebp + 8]
push eax
call fcn.0043e108
add esp, 0x18
test al, al
jne 0x43e9e9
push ebx
call fcn.004ae9a0
xor eax, eax
pop ecx
push eax
lea edx, [ebp - 4]
dec dword [ebp - 0xc]
push 2
push edx
call fcn.00447d1c
add esp, 8
pop eax
mov edx, dword [ebp - 0x28]
mov dword fs:[0], edx
jmp 0x43eae1
cmp word [edi + 0xe], 0x18
lea esi, [edi + 0x28]
jne 0x43ea2a
mov eax, dword [ebp - 0x3c]
lea eax, [eax + eax*2]
add eax, 3
and eax, 0xfffffffc
push eax
mov edx, dword [ebp - 0x40]
push edx
mov ecx, dword [ebp - 0x3c]
push ecx
mov edx, dword [ebp - 0x40]
dec edx
imul edx, eax
add esi, edx
push esi
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x328]
push ecx
mov eax, dword [ebp + 8]
push eax
call fcn.0043e5d4
add esp, 0x18
jmp 0x43eaa0
cmp word [edi + 0xe], 8
jne 0x43ea5d
mov eax, dword [ebp - 0x3c]
add eax, 3
and eax, 0xfffffffc
push edi
push eax
mov edx, dword [ebp - 0x40]
push edx
mov ecx, dword [ebp - 0x3c]
push ecx
push esi
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x328]
push edx
mov ecx, dword [ebp + 8]
push ecx
call fcn.0043e5f8
add esp, 0x1c
jmp 0x43eaa0
mov eax, dword [ebp + 0xc]
push eax
push 0x4d4336
push 0x26b
push 0x4d432f
call fcn.0043d7b8
add esp, 0x10
push ebx
call fcn.004ae9b0
xor eax, eax
pop ecx
push eax
lea edx, [ebp - 4]
dec dword [ebp - 0xc]
push 2
push edx
call fcn.00447d1c
add esp, 8
pop eax
mov edx, dword [ebp - 0x28]
mov dword fs:[0], edx
jmp 0x43eae1
test ebx, ebx
je 0x43eaab
push ebx
call fcn.004ae9b0
pop ecx
mov ecx, dword [ebp + 8]
lea edx, [ebp - 4]
mov dword [ecx + 0x12d4], 1
mov eax, dword [ebp + 8]
mov byte [eax + 0x650], 1
mov al, 1
push eax
dec dword [ebp - 0xc]
push 2
push edx
call fcn.00447d1c
add esp, 8
pop eax
mov edx, dword [ebp - 0x28]
mov dword fs:[0], edx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret