Function at 0x437900
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x2c
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
lea esi, [esp + 0x18]
mov ecx, esi
push 0
push dword [esp + 0x44]
call fcn.00439e10
mov ecx, esi
push 0x40
call fcn.00439e30
test eax, eax
js 0x437df9
mov edi, 0xae4db5d7
xor eax, eax
lea ebx, [edi + 0x51b25a29]
push ebx
push eax
call fcn.0043b420
add esp, 8
mov dword [esp + 4], 0x60616263
mov ecx, 0x86ceb5bc
nop
nop
nop
movzx edx, byte [esp + ecx + 0x79314a48]
xor edx, ecx
add edx, 0xc98a521f
mov esi, edx
and esi, 1
xor edx, 1
lea edx, [edx + esi*2]
mov byte [esp + ecx + 0x79314a48], dl
inc ecx
cmp ecx, 0x86ceb5c0
jne 0x437970
mov ecx, dword [esp + 4]
mov edx, dword [0x44965c]
test edx, edx
je 0x437a10
xor esi, esi
mov ebp, dword [0x449660]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [ebp + esi*8], 0x67f3d776
je 0x4379e0
inc esi
cmp edx, esi
jne 0x4379c0
jmp 0x437a10
mov edx, dword [ebp + esi*8 + 4]
cmp edx, ecx
je 0x437a10
lea ecx, [esp + 4]
push ecx
push ebx
push eax
push 0x10
push 0x10
push edx
push dword [0x449664]
mov esi, eax
call fcn.0043b480
add esp, 0x1c
mov ecx, eax
mov eax, esi
nop
nop
nop
nop
nop
nop
nop
nop
add edi, 0x1000
mov dword [esp + 4], 0x26656467
xor edx, edx
movzx esi, byte [esp + edx + 4]
mov ebx, 0x44
sub ebx, edx
mov ebp, ebx
and ebp, esi
not esi
or esi, ebx
add esi, edx
add esi, 0xa7ce4dbc
or esi, ebp
mov ebx, esi
and ebx, 0xc18d9227
xor esi, 0xc18d9227
lea ebx, [esi + ebx*2]
add ebx, 0xd4eb8208
mov esi, ebx
xor esi, 7
and ebx, 0x78
add ebx, ebx
sub ebx, esi
mov byte [esp + edx + 4], bl
add edx, 0x12c85e56
mov esi, edx
and esi, 0xb
xor edx, 0xed37a1ab
lea edx, [edx + esi*2]
cmp edx, 4
jb 0x437a20
cmp ecx, dword [esp + 4]
je 0x437950
test ecx, ecx
js 0x437df0
mov ecx, dword [eax]
test ecx, ecx
je 0x437dda
xor ebp, ebp
mov dword [esp + 0xc], eax
jmp 0x437abb
mov ecx, dword [eax]
inc ebp
cmp ebp, ecx
jae 0x437dda
mov edx, ebp
shl edx, 4
movzx esi, word [eax + edx + 4]
cmp esi, dword [esp + 0x40]
jne 0x437ab2
movzx ebx, word [eax + edx + 0xa]
mov edi, dword [esp + 0x18]
mov dword [esp + 4], 0x60616263
mov ecx, 0x86ceb5bc
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x79314a48]
xor edx, ecx
add edx, 0xc98a521f
mov esi, edx
and esi, 1
xor edx, 1
lea edx, [edx + esi*2]
mov byte [esp + ecx + 0x79314a48], dl
inc ecx
cmp ecx, 0x86ceb5c0
jne 0x437af0
mov ecx, dword [esp + 4]
mov esi, dword [0x44965c]
test esi, esi
je 0x437b90
mov dword [esp + 0x10], ebx
xor ebx, ebx
mov edx, dword [0x449660]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edx + ebx*8], 0x22fd5d1b
je 0x437b50
inc ebx
cmp esi, ebx
jne 0x437b40
jmp 0x437b90
mov esi, dword [edx + ebx*8 + 4]
cmp esi, ecx
je 0x437b90
push 2
push 0
push 0
lea ecx, [esp + 0x20]
push ecx
push 0xffffffffffffffff
push dword [esp + 0x24]
push edi
push 0x1c
push esi
push dword [0x449664]
mov esi, eax
call fcn.0043b480
add esp, 0x28
mov ecx, eax
mov eax, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
test ecx, ecx
js 0x437ab0
mov dword [esp + 0x10], ebp
xor eax, eax
mov ebx, 0x10c
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
push ebx
push eax
call fcn.0043b420
add esp, 8
mov ebp, dword [esp + 0x14]
mov dword [esp], 0x60616263
mov ecx, 0x86ceb5bc
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx + 0x79314a44]
xor esi, ecx
add esi, 0xc98a521f
mov edi, esi
and edi, 1
xor esi, 1
lea edx, [esi + edi*2]
mov byte [esp + ecx + 0x79314a44], dl
inc ecx
cmp ecx, 0x86ceb5c0
jne 0x437bd0
mov ecx, dword [esp]
mov esi, dword [0x44965c]
test esi, esi
je 0x437c70
mov edx, ebp
xor edi, edi
mov ebp, dword [0x449660]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [ebp + edi*8], 0xa269eeef
je 0x437c40
inc edi
cmp esi, edi
jne 0x437c20
jmp 0x437c70
mov esi, dword [ebp + edi*8 + 4]
cmp esi, ecx
je 0x437c70
push 9
push ebx
push eax
lea ecx, [esp + 0x10]
push ecx
push edx
push 0x14
push esi
push dword [0x449664]
mov esi, eax
call fcn.0043b480
add esp, 0x20
mov ecx, eax
mov eax, esi
nop
nop
nop
nop
nop
nop
nop
mov ebp, dword [eax]
mov dword [esp], 0x66e5e4e6
xor ebx, ebx
nop
nop
nop
nop
nop
mov edx, ebx
add dl, 0x3b
xor dl, byte [esp + ebx]
add dl, 0x28
mov byte [esp + ebx], dl
lea edx, [ebx + ebx]
mov esi, edx
and esi, 2
and edx, ebx
xor esi, ebx
lea ebx, [esi + edx*2]
xor ebx, 1
cmp ebx, 4
jb 0x437c80
lea ebx, [ebp + 8]
cmp ecx, dword [esp]
je 0x437bb0
test ecx, ecx
mov edx, dword [esp + 0x44]
js 0x437d2b
lea ecx, [ebp + 1]
mov esi, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
add ecx, 0xfffffffe
cmp word [edx + esi + 2], 0
lea esi, [esi + 2]
jne 0x437cd0
cmp ebp, esi
ja 0x437d2b
test ecx, ecx
je 0x437d2b
neg ecx
xor edi, edi
mov esi, edx
mov dword [esp + 0x28], edi
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp ebp, edi
je 0x437d23
movzx edx, byte [esi + edi]
lea ebx, [edi + 1]
cmp dl, byte [eax + edi + 4]
mov edx, dword [esp + 0x44]
mov edi, ebx
je 0x437d00
mov edi, dword [esp + 0x28]
inc edi
inc esi
cmp ecx, edi
jne 0x437cec
jmp 0x437d2b
test edx, edx
jne 0x437e0e
push eax
call fcn.00439b60
add esp, 4
mov ecx, dword [esp + 0x14]
mov dword [esp], 0x60616263
mov eax, 0x86ceb5bc
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x79314a44]
xor edx, eax
add edx, 0xc98a521f
mov esi, edx
and esi, 1
xor edx, 1
lea edx, [edx + esi*2]
mov byte [esp + eax + 0x79314a44], dl
inc eax
cmp eax, 0x86ceb5c0
jne 0x437d50
mov edx, dword [0x44965c]
test edx, edx
mov eax, dword [esp + 0xc]
mov ebp, dword [esp + 0x10]
je 0x437ab0
mov esi, dword [esp]
xor ebx, ebx
mov edi, dword [0x449660]
nop
nop
nop
nop
nop
cmp dword [edi + ebx*8], 0xb430e561
je 0x437db3
inc ebx
cmp edx, ebx
jne 0x437da0
jmp 0x437ab0
mov edx, dword [edi + ebx*8 + 4]
cmp edx, esi
je 0x437ab0
push ecx
push 4
push edx
push dword [0x449664]
call fcn.0043b480
mov eax, dword [esp + 0x1c]
add esp, 0x10
jmp 0x437ab0
xor esi, esi
push eax
call fcn.00439b60
add esp, 4
lea ecx, [esp + 0x18]
call fcn.00439f70
jmp 0x437e04
push eax
call fcn.00439b60
add esp, 4
lea ecx, [esp + 0x18]
call fcn.00439f70
xor esi, esi
mov eax, esi
add esp, 0x2c
pop esi
pop edi
pop ebx
pop ebp
ret
mov esi, dword [esp + 0x14]
push eax
call fcn.00439b60
add esp, 4
mov eax, dword [esp + 0xc]
jmp 0x437ddc