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

Disassembly:
sub esp, 0x6c
mov eax, dword [0x517490]
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 0x4367d3
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 0x4366d7
push 0
push dword [esp + 0x3c]
lea eax, [esp + 0x70]
push eax
call fcn.004374ba
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.00437da7
mov edx, eax
add esp, 0x1c
test edx, edx
je 0x436733
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 0x4366c0
mov ebx, dword [esp + 0x69]
jmp 0x436733
push ebp
push dword [esp + 0x90]
push dword [esp + 0x90]
push dword [esp + 0x58]
call fcn.00437da7
mov edx, eax
add esp, 0x10
test edx, edx
je 0x436711
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 0x436700
push dword [esp + 0xb0]
lea eax, [esp + 0x6c]
push dword [esp + 0x3c]
push eax
call fcn.004374ba
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 0x436817
cmp al, 2
jne 0x43677f
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 0x436817
mov al, byte [esp + 0x17]
mov cl, byte [esp + 0x68]
cmp al, 3
je 0x43680c
test al, al
je 0x436808
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 0x436657
mov edx, dword [esp + 0x58]
mov ebx, dword [esp + 0x28]
mov edi, dword [esp + 0x1c]
cmp byte [esp + 0xa0], 0
je 0x4367e8
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.004b94b6
add esp, 0x6c
ret
cmp al, 3
jne 0x4367af
mov ecx, dword [esp + 0x10]
inc ecx
mov dword [esp + 0x10], ecx
jmp 0x4367b3
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.004c02c0
push 0
mov esi, eax
mov eax, 0xc0
push eax
push ebx
push edi
call fcn.004c02c0
lea ecx, [esi - 8]
cmp ecx, 0xb3
ja 0x436890
cmp eax, 8
jl 0x436890
cmp eax, 0xbb
jle 0x43689b
mov ecx, dword [esp + 0x10]
inc ecx
mov dword [esp + 0x10], ecx
jmp 0x43689f
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
cmp edx, ebx
jl 0x4368b5
jg 0x4368b1
cmp eax, edi
jb 0x4368b5
inc dword [esp + 0x28]
mov esi, dword [esp + 0x18]
cmp edx, esi
jl 0x4368d1
jg 0x4368c5
cmp eax, dword [esp + 0x1c]
jb 0x4368d1
cmp ebx, esi
jg 0x4368d5
jl 0x4368d1
cmp edi, dword [esp + 0x1c]
jae 0x4368d5
inc dword [esp + 0x2c]
cmp byte [esp + 0xa0], 0
mov esi, ebx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x18], esi
je 0x4367b7
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.00436418
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.00436418
mov eax, dword [esp + 0x64]
add esp, 0x28
mov ecx, dword [esp + 0x10]
inc dword [eax]
jmp 0x4367b7