Function at 0x436c52
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x6c
mov eax, dword [0x518450]
xor eax, esp
mov dword [esp + 0x68], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [esp + 0x80]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x90]
mov edx, dword [esp + 0x98]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x94]
mov ecx, dword [esp + 0xc0]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0xb4]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0xb8]
mov ebp, dword [esp + 0x84]
xor ebx, ebx
and dword [esp + 0x2c], ebx
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x30], ebp
mov ebp, dword [esp + 0xa8]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0xa4]
bswap ebp
bswap eax
mov dword [esp + 0x54], ebp
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x50]
mov esi, dword [edx + 4]
mov dword [esp + 0x3c], ecx
xor ecx, ecx
lea ebp, [eax + ebp*4]
mov dword [esp + 0x58], edx
mov eax, dword [esp + 0x44]
mov edi, dword [edx]
mov dword [esp + 0x34], ebp
xor ebp, ebp
and dword [eax], ecx
and dword [eax + 4], ecx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x18], esi
cmp dword [esp + 0x30], ecx
jbe 0x436eb4
cmp dword [esp + 0xb0], 0
lea edi, [esp + 0x68]
mov esi, dword [esp + 0x34]
mov eax, dword [esp + 0x50]
movsd dword es:[edi], dword [esi]
mov eax, dword [eax + ebp*4]
bswap eax
mov dword [esp + 0x20], eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
jne 0x436db8
push 0
push dword [esp + 0x3c]
lea eax, [esp + 0x70]
push eax
call fcn.00437ba3
mov ebx, dword [esp + 0x75]
push ebp
push dword [esp + 0x9c]
bswap ebx
push dword [esp + 0x9c]
mov dword [esp + 0x81], ebx
push dword [esp + 0x64]
call fcn.00438215
mov edx, eax
add esp, 0x1c
test edx, edx
je 0x436e14
lea eax, [esp + 0x68]
xor ecx, ecx
sub edx, eax
lea eax, [edx + ecx*4]
mov eax, dword [esp + eax + 0x68]
xor dword [esp + ecx*4 + 0x68], eax
inc ecx
cmp ecx, 4
jl 0x436da1
mov ebx, dword [esp + 0x69]
jmp 0x436e14
push ebp
push dword [esp + 0x90]
push dword [esp + 0x90]
push dword [esp + 0x58]
call fcn.00438215
mov edx, eax
add esp, 0x10
test edx, edx
je 0x436df2
lea eax, [esp + 0x68]
xor ecx, ecx
sub edx, eax
lea eax, [edx + ecx*4]
mov eax, dword [esp + eax + 0x68]
xor dword [esp + ecx*4 + 0x68], eax
inc ecx
cmp ecx, 4
jl 0x436de1
push dword [esp + 0xb0]
lea eax, [esp + 0x6c]
push dword [esp + 0x3c]
push eax
call fcn.00437ba3
mov ebx, dword [esp + 0x75]
add esp, 0xc
bswap ebx
mov dword [esp + 0x69], ebx
mov cl, byte [esp + 0x68]
mov al, cl
shr al, 6
mov byte [esp + 0x17], al
cmp al, 1
je 0x436ef8
cmp al, 2
jne 0x436e60
movzx eax, cl
xor edx, edx
and eax, 0x3f
xor ecx, ecx
bts edx, eax
cmp eax, 0x20
cmovae ecx, edx
xor edx, ecx
cmp eax, 0x40
cmovae ecx, edx
and edx, dword [esp + 0x54]
and ecx, dword [esp + 0x5c]
or edx, ecx
jne 0x436ef8
mov al, byte [esp + 0x17]
mov cl, byte [esp + 0x68]
cmp al, 3
je 0x436eed
test al, al
je 0x436ee9
movzx edx, cl
xor eax, eax
and edx, 0x3f
xor ecx, ecx
bts eax, edx
cmp edx, 0x20
cmovae ecx, eax
xor eax, ecx
cmp edx, 0x40
mov edx, dword [esp + 0x44]
cmovae ecx, eax
or dword [edx], eax
or dword [edx + 4], ecx
mov ecx, dword [esp + 0x10]
mov esi, dword [esp + 0x18]
add dword [esp + 0x34], 0x10
inc ebp
cmp ebp, dword [esp + 0x30]
jb 0x436d38
mov edx, dword [esp + 0x58]
mov ebx, dword [esp + 0x28]
mov edi, dword [esp + 0x1c]
cmp byte [esp + 0xa0], 0
je 0x436ec9
mov eax, dword [esp + 0x60]
add dword [eax], ebx
mov dword [edx], edi
mov dword [edx + 4], esi
mov eax, dword [esp + 0x2c]
add eax, ecx
mov ecx, dword [esp + 0x78]
add eax, ebx
pop edi
pop esi
neg eax
pop ebp
sbb eax, eax
pop ebx
xor ecx, esp
inc eax
call fcn.004b9a6c
add esp, 0x6c
ret
cmp al, 3
jne 0x436e90
mov ecx, dword [esp + 0x10]
inc ecx
mov dword [esp + 0x10], ecx
jmp 0x436e94
mov ecx, ebx
movzx esi, bl
shr ecx, 0x14
mov edx, 0xc0
add ecx, dword [esp + 0x20]
xor edi, edi
mov eax, ecx
mul edx
push 0
add esi, eax
mov dword [esp + 0x28], esi
adc edi, edx
shr ebx, 8
and ebx, 0xfff
mov dword [esp + 0x24], edi
lea eax, [ecx + ebx]
mov ecx, 0xc0
mul ecx
push ecx
push dword [esp + 0x28]
mov edi, eax
mov ebx, edx
movzx eax, byte [esp + 0x79]
cdq
add edi, eax
push esi
adc ebx, edx
call fcn.004c0870
push 0
mov esi, eax
mov eax, 0xc0
push eax
push ebx
push edi
call fcn.004c0870
lea ecx, [esi - 8]
cmp ecx, 0xb3
ja 0x436f71
cmp eax, 8
jl 0x436f71
cmp eax, 0xbb
jle 0x436f7c
mov ecx, dword [esp + 0x10]
inc ecx
mov dword [esp + 0x10], ecx
jmp 0x436f80
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
cmp edx, ebx
jl 0x436f96
jg 0x436f92
cmp eax, edi
jb 0x436f96
inc dword [esp + 0x28]
mov esi, dword [esp + 0x18]
cmp edx, esi
jl 0x436fb2
jg 0x436fa6
cmp eax, dword [esp + 0x1c]
jb 0x436fb2
cmp ebx, esi
jg 0x436fb6
jl 0x436fb2
cmp edi, dword [esp + 0x1c]
jae 0x436fb6
inc dword [esp + 0x2c]
cmp byte [esp + 0xa0], 0
mov esi, ebx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x18], esi
je 0x436e98
mov ecx, dword [esp + 0x64]
push dword [esp + 0x40]
push dword [esp + 0x4c]
inc dword [ecx]
lea ecx, [esp + 0x76]
push ecx
push edx
push eax
call fcn.00436af9
mov eax, dword [esp + 0x50]
push dword [esp + 0x54]
push dword [esp + 0x60]
inc dword [eax]
lea eax, [esp + 0x8f]
push eax
push ebx
push edi
call fcn.00436af9
mov eax, dword [esp + 0x64]
add esp, 0x28
mov ecx, dword [esp + 0x10]
inc dword [eax]
jmp 0x436e98