Function at 0x436770
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x55c
mov eax, dword [0x4c03a0]
xor eax, esp
mov dword [esp + 0x558], eax
mov eax, dword [esp + 0x570]
push ebp
mov ebp, dword [esp + 0x570]
push esi
push edi
push 0x4b451c
mov dword [esp + 0x10], eax
call fcn.004169a0
cmp dword [esp + 0x574], 0xffffffff
mov edi, eax
jne 0x43683a
xor esi, esi
mov dword [esp + 0x574], edi
test edi, edi
jle 0x43683a
push esi
lea ecx, [esp + 0x98]
push 0x4b451c
push ecx
call fcn.0045e635
add esp, 0xc
push 0x200
push 0x4b1914
lea edx, [esp + 0x16c]
push edx
push 0x4b4514
lea eax, [esp + 0xa4]
push eax
call fcn.004168e0
mov ecx, ebp
lea eax, [esp + 0x164]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x436823
test dl, dl
je 0x43681f
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x436823
add eax, 2
add ecx, 2
test dl, dl
jne 0x436803
xor eax, eax
jmp 0x436828
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x436833
inc esi
cmp esi, edi
jl 0x4367c0
jmp 0x43683a
mov dword [esp + 0x574], esi
mov eax, dword [esp + 0xc]
test eax, eax
je 0x436851
push 0x50
push eax
lea ecx, [esp + 0x18]
push ecx
call fcn.00425370
jmp 0x43686b
mov edx, dword [esp + 0x574]
push edx
lea eax, [esp + 0x14]
push 0x4b451c
push eax
call fcn.0045e635
add esp, 0xc
push ebp
push 0x4b4514
lea ecx, [esp + 0x18]
push ecx
call fcn.004167a0
cmp byte [esp + 0x570], 0
je 0x4368bf
xor esi, esi
test edi, edi
jle 0x4368bf
jmp 0x436890
push esi
lea edx, [esp + 0x98]
push 0x4b451c
push edx
call fcn.0045e635
add esp, 0xc
push 0
push 0x4b450c
lea eax, [esp + 0x9c]
push eax
call fcn.004167e0
inc esi
cmp esi, edi
jl 0x436890
movzx ecx, byte [esp + 0x570]
push ecx
push 0x4b450c
lea edx, [esp + 0x18]
push edx
call fcn.004167e0
push 0x4b479c
lea eax, [esp + 0x14]
push eax
call fcn.00416720
push 0x4b4790
lea ecx, [esp + 0x14]
push ecx
call fcn.00416720
push 0
push 0x4b4788
lea edx, [esp + 0x18]
push edx
call fcn.004167e0
test ebx, ebx
je 0x436a10
mov esi, dword [0x4b1634]
push 0x6b
push ebx
call esi
push eax
push 0x4b4788
lea eax, [esp + 0x18]
push eax
call fcn.004167e0
push 0x6d
push ebx
call esi
push eax
push 0x4b477c
lea ecx, [esp + 0x18]
push ecx
call fcn.004167e0
push 0x66
push ebx
call esi
test eax, eax
je 0x436974
push 0x400
lea edx, [esp + 0x168]
push edx
push 0x67
push ebx
call dword [0x4b166c]
lea eax, [esp + 0x164]
push eax
push 0x4b479c
lea ecx, [esp + 0x18]
push ecx
call fcn.004167a0
push 0x68
push ebx
call esi
test eax, eax
je 0x436a10
push 0x69
push ebx
call dword [0x4b1640]
mov ebp, eax
push ebp
call dword [0x4b1540]
mov esi, eax
add esi, 0xa
xor ecx, ecx
mov eax, esi
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0045f174
add esp, 4
push esi
mov edi, eax
push edi
push ebp
call fcn.0043ded0
push edi
push 0x4b4790
lea eax, [esp + 0x18]
push eax
call fcn.004167c0
push edi
call fcn.0045efc5
add esp, 4
cmp byte [esp + 0x56c], 0
jne 0x437045
lea ecx, [esp + 0x164]
push ecx
push 0x400
call dword [0x4b13dc]
lea edx, [esp + 0x164]
push edx
push 0x4b4774
lea eax, [esp + 0x18]
push eax
call fcn.004167a0
jmp 0x436a1e
cmp byte [esp + 0x56c], 0
jne 0x437045
mov ecx, dword [0x4e81f8]
push ecx
call fcn.00425d80
mov esi, eax
push esi
call fcn.00425020
push eax
push 0x4b1be8
lea edx, [esp + 0x18]
push edx
call fcn.004167a0
push esi
call fcn.0045efc5
mov eax, dword [0x4e8204]
add esp, 4
push eax
call fcn.00425d80
mov esi, eax
push esi
call fcn.00425020
push eax
push 0x4b4768
lea ecx, [esp + 0x18]
push ecx
call fcn.004167a0
push esi
call fcn.0045efc5
add esp, 4
xor edx, edx
cmp dword [0x4e6194], edx
lea eax, [esp + 0x10]
sete dl
push edx
push 0x4b4760
push eax
call fcn.004167e0
push 0x4e3308
push 0x4b3db8
lea ecx, [esp + 0x18]
push ecx
call fcn.004167a0
push 0x4b1d54
lea edx, [esp + 0x14]
push edx
call fcn.00416720
push 0x4e6199
push 0x4b3cd4
lea eax, [esp + 0x18]
push eax
call fcn.004167a0
push 0x4e6599
push 0x4b3cdc
lea ecx, [esp + 0x18]
push ecx
call fcn.004167a0
movzx edx, byte [0x4e6999]
push edx
push 0x4b3cc8
lea eax, [esp + 0x18]
push eax
call fcn.004167e0
push 0x4e4308
push 0x4b4758
lea ecx, [esp + 0x18]
push ecx
call fcn.004167a0
cmp byte [0x4e4308], 0
je 0x436b18
mov eax, 0x4b1914
jmp 0x436b24
mov edx, dword [0x4f6348]
push edx
call fcn.00425020
mov ecx, eax
lea esi, [ecx + 1]
lea esp, [esp]
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x436b30
sub ecx, esi
inc ecx
push ecx
push eax
push 0x4b474c
lea eax, [esp + 0x1c]
push eax
call fcn.00416840
mov eax, dword [0x4e57c8]
mov ecx, dword [0x4e57cc]
cmp eax, 0x7fffffff
jne 0x436b7b
cmp ecx, 0x7fffffff
jne 0x436b7b
mov ecx, dword [0x4b4744]
mov dl, byte [0x4b4748]
mov dword [esp + 0x60], ecx
mov byte [esp + 0x64], dl
jmp 0x436b87
lea edx, [esp + 0x60]
push edx
push ecx
push eax
call fcn.004253f0
lea eax, [esp + 0x60]
push eax
push 0x4b4738
lea ecx, [esp + 0x18]
push ecx
call fcn.004167a0
movzx edx, byte [0x4e58b3]
push edx
push 0x4b472c
lea eax, [esp + 0x18]
push eax
call fcn.004167e0
movzx ecx, byte [0x4e58b0]
push ecx
push 0x4b4720
lea edx, [esp + 0x18]
push edx
call fcn.004167e0
mov eax, dword [0x4e57a8]
push eax
push 0x4b4710
lea ecx, [esp + 0x18]
push ecx
call fcn.004167e0
movzx edx, byte [0x4e57bd]
push edx
push 0x4b3dec
lea eax, [esp + 0x18]
push eax
call fcn.004167e0
movzx ecx, byte [0x4e57bc]
push ecx
push 0x4b4708
lea edx, [esp + 0x18]
push edx
call fcn.004167e0
movzx eax, byte [0x4e57fe]
push eax
push 0x4b46fc
lea ecx, [esp + 0x18]
push ecx
call fcn.004167e0
mov edx, dword [0x4e579c]
push edx
push 0x4b3d44
lea eax, [esp + 0x18]
push eax
call fcn.004167e0
movzx ecx, byte [0x4e57fb]
push ecx
push 0x4b46f4
lea edx, [esp + 0x18]
push edx
call fcn.004167e0
movzx eax, byte [0x4e57fd]
push eax
push 0x4b46e8
lea ecx, [esp + 0x18]
push ecx
call fcn.004167e0
movzx edx, byte [0x4e57fc]
push edx
push 0x4b46e0
lea eax, [esp + 0x18]
push eax
call fcn.004167e0
mov ecx, dword [0x4e57b0]
push ecx
push 0x4b46d8
lea edx, [esp + 0x18]
push edx
call fcn.004167e0
movzx eax, byte [0x4e57ba]
push eax
push 0x4b18bc
lea ecx, [esp + 0x18]
push ecx
call fcn.004167e0
movzx edx, byte [0x4e58b2]
push edx
push 0x4b2ef4
lea eax, [esp + 0x18]
push eax
call fcn.004167e0
mov ecx, dword [0x4e57a4]
push ecx
push 0x4b46cc
lea edx, [esp + 0x18]
push edx
call fcn.004167e0
movzx eax, byte [0x4e57f9]
push eax
push 0x4b46c0
lea ecx, [esp + 0x18]
push ecx
call fcn.004167e0
movzx edx, byte [0x4e57b9]
push edx
push 0x4b46b4
lea eax, [esp + 0x18]
push eax
call fcn.004167e0
movzx ecx, byte [0x4e57b8]
push ecx
push 0x4b46a8
lea edx, [esp + 0x18]
push edx
call fcn.004167e0
movzx eax, byte [0x4e58b1]
push eax
push 0x4b203c
lea ecx, [esp + 0x18]
push ecx
call fcn.004167e0
mov edx, dword [0x4e57a0]
push edx
push 0x4b46a0
lea eax, [esp + 0x18]
push eax
call fcn.004167e0
mov ecx, dword [0x4e2f04]
push ecx
push 0x4b4694
lea edx, [esp + 0x18]
push edx
call fcn.004167e0
movzx eax, byte [0x4e699a]
push eax
push 0x4b4688
lea ecx, [esp + 0x18]
push ecx
call fcn.004167e0
movzx edx, byte [0x4e699b]
push edx
push 0x4b4678
lea eax, [esp + 0x18]
push eax
call fcn.004167e0
movzx ecx, byte [0x4e5d7a]
push ecx
push 0x4b466c
lea edx, [esp + 0x18]
push edx
call fcn.004167e0
xor eax, eax
jmp 0x436db0
mov cl, byte [eax + 0x4e5310]
mov byte [esp + eax + 0xe4], cl
inc eax
test cl, cl
jne 0x436db0
lea eax, [esp + 0xe4]
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x436dd0
sub eax, edx
lea ecx, [eax + 1]
xor eax, eax
test ecx, ecx
jbe 0x436df3
mov dl, al
add dl, 0x49
xor byte [esp + eax + 0xe4], dl
inc eax
cmp eax, ecx
jb 0x436de2
push ecx
lea eax, [esp + 0xe8]
push eax
push 0x4b4660
lea ecx, [esp + 0x1c]
push ecx
call fcn.00416840
movzx edx, byte [0x4e5390]
push edx
push 0x4b4650
lea eax, [esp + 0x18]
push eax
call fcn.004167e0
movzx ecx, byte [0x4e57fa]
push ecx
push 0x4b4644
lea edx, [esp + 0x18]
push edx
call fcn.004167e0
movzx eax, byte [0x4e57ec]
push eax
push 0x4b4634
lea ecx, [esp + 0x18]
push ecx
call fcn.004167e0
movzx edx, byte [0x4e5851]
push edx
push 0x4b4628
lea eax, [esp + 0x18]
push eax
call fcn.004167e0
movzx ecx, byte [0x4e57ff]
push ecx
push 0x4b4618
lea edx, [esp + 0x18]
push edx
call fcn.004167e0
mov eax, dword [0x4e5d74]
push eax
push 0x4b4608
lea ecx, [esp + 0x18]
push ecx
call fcn.004167e0
push 0x4e5800
push 0x4b45f8
lea edx, [esp + 0x18]
push edx
call fcn.004167a0
mov eax, dword [0x4f6350]
push eax
push 0x4b45e8
lea ecx, [esp + 0x18]
push ecx
call fcn.004167e0
mov edx, dword [0x4f6354]
push edx
push 0x4b45dc
lea eax, [esp + 0x18]
push eax
call fcn.004167e0
mov ecx, dword [0x4f6358]
push ecx
push 0x4b45d0
lea edx, [esp + 0x18]
push edx
call fcn.004167e0
mov eax, dword [0x4f635c]
push eax
push 0x4b45c4
lea ecx, [esp + 0x18]
push ecx
call fcn.004167e0
mov ecx, 0x4e5854
call fcn.00427f40
push eax
push 0x4b45b4
lea edx, [esp + 0x18]
push edx
call fcn.004167e0
mov ecx, 0x4e5878
call fcn.00427f40
push eax
push 0x4b45a4
lea eax, [esp + 0x18]
push eax
call fcn.004167e0
xor ecx, ecx
cmp dword [0x4e57e4], 1
lea edx, [esp + 0x10]
sete cl
push ecx
push 0x4b4594
push edx
call fcn.004167e0
xor eax, eax
mov esi, 2
cmp dword [0x4e57e4], esi
lea ecx, [esp + 0x10]
sete al
push eax
push 0x4b4584
push ecx
call fcn.004167e0
mov edx, dword [0x4e5d7c]
push edx
push 0x4b34ec
lea eax, [esp + 0x18]
push eax
call fcn.004167e0
mov ecx, dword [0x4e5d80]
push ecx
push 0x4b457c
lea edx, [esp + 0x18]
push edx
call fcn.004167e0
mov eax, dword [0x4e5d84]
push eax
push 0x4b4574
lea ecx, [esp + 0x18]
push ecx
call fcn.004167e0
xor edx, edx
cmp dword [0x4e57c0], 3
lea eax, [esp + 0x10]
sete dl
push edx
push 0x4b4568
push eax
call fcn.004167e0
xor ecx, ecx
cmp dword [0x4e57c0], esi
lea edx, [esp + 0x10]
sete cl
push ecx
push 0x4b455c
push edx
call fcn.004167e0
xor eax, eax
cmp dword [0x4e57c0], 5
lea ecx, [esp + 0x10]
sete al
push eax
push 0x4b454c
push ecx
call fcn.004167e0
movzx edx, byte [0x4f6362]
push edx
push 0x4b4540
lea eax, [esp + 0x18]
push eax
call fcn.004167e0
push 0x4e5974
push 0x4b4534
lea ecx, [esp + 0x18]
push ecx
call fcn.004167a0
push 0xc0
push 0x4e58b4
push 0x4b4528
lea edx, [esp + 0x1c]
push edx
call fcn.00416840
mov ecx, dword [esp + 0x564]
pop edi
pop esi
pop ebp
xor ecx, esp
call fcn.0045e626
add esp, 0x55c
ret 0x14