Function at 0x4357d0
Capabilities:
Encode data using base64

Disassembly:
mov ecx, dword [esp + 4]
push ebx
push ebp
push esi
lea eax, [ecx + ecx*4]
xor ebp, ebp
push edi
lea eax, [eax + eax*8]
lea edx, [ecx + eax*8]
mov al, byte [edx*4 + 0x5c853a]
test al, al
lea esi, [edx*4 + 0x5c8500]
je 0x43584c
mov edx, dword [esp + 0x18]
test byte [edx + 1], 2
je 0x435828
cmp dword [esi + 0x138], ebp
jne 0x43582e
cmp al, 8
jbe 0x435812
sub al, 8
mov byte [esi + 0x3a], al
jmp 0x43582e
add ecx, 0x8000
push ebp
push ecx
mov byte [esi + 0x3a], 0
call fcn.00401010
add esp, 8
jmp 0x43582e
mov dword [esi + 0x138], ebp
mov dword [esi + 0x1c], ebp
mov ecx, dword [esi + 0x14]
mov eax, ecx
pop edi
shl eax, 5
sub eax, ecx
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
mov dword [esi + 0x14], eax
pop esi
pop ebp
pop ebx
ret
mov eax, dword [esi + 0x1a4]
xor edi, edi
cmp eax, ebp
jne 0x435860
cmp dword [esi + 0xe4], ebp
jle 0x435865
mov edi, 1
mov edx, dword [esi + 0x168]
dec edx
mov eax, edx
mov dword [esi + 0x168], edx
cmp eax, 0xfffffff6
jle 0x43587e
mov edi, 1
mov ecx, dword [esi + 0x16c]
dec ecx
mov eax, ecx
mov dword [esi + 0x16c], ecx
cmp eax, 0xfffffff6
jle 0x435897
mov edi, 1
cmp dword [esi + 0x54c], ebp
jne 0x4358af
cmp dword [0x5f37e4], ebp
jne 0x4358af
cmp dword [esi + 0x1a0], ebp
jge 0x4358be
mov edi, 1
mov dword [esi + 0x1a8], 0xffffffff
mov eax, dword [0x5fee10]
mov ebx, dword [esp + 0x18]
test ah, 0x80
je 0x4358dc
test byte [ebx + 1], 0xa
je 0x4358dc
and dword [0x5fee10], 0x7fff
cmp dword [0x5c8188], ebp
jle 0x43591f
test byte [ebx + 1], 2
je 0x43591f
mov eax, dword [esi + 0xc]
cdq
and edx, 0x1fffff
add eax, edx
mov ecx, eax
mov eax, dword [esi + 0x10]
cdq
and edx, 0x1fffff
add eax, edx
sar eax, 0x15
sar ecx, 0x15
push eax
push ecx
call fcn.00429cd0
add esp, 8
cmp eax, 0xf5
jne 0x43591f
and byte [ebx + 1], 0xfd
cmp dword [0x5c8188], 3
jne 0x43597b
mov eax, dword [0x5adbc0]
cmp eax, 0x8c
je 0x435942
cmp eax, 0xd2
je 0x435942
cmp eax, 0x118
jne 0x435955
push ebp
push ebp
push 0x44
push ebp
push ebp
call fcn.00477d10
mov eax, dword [0x5adbc0]
add esp, 0x14
cmp eax, 0x15e
jae 0x435961
mov edi, 1
jne 0x43597b
push ebp
push ebp
push 0x43
push ebp
push ebp
mov dword [esi + 0x534], 0x15e
call fcn.00477d10
add esp, 0x14
cmp dword [esi + 0xb8], 0xa
jg 0x435988
cmp edi, ebp
je 0x43599d
mov al, byte [ebx + 1]
mov byte [ebx], 0
and al, 0xe5
mov byte [ebx + 1], al
mov dword [esi + 0x144], 0x320
cmp dword [esi + 0x4b8], ebp
jle 0x4359fa
mov cl, byte [ebx]
mov al, cl
shl al, 4
sar al, 4
neg al
xor al, cl
and al, 0xf
xor al, cl
mov cl, al
and al, 0xf
sar cl, 4
neg cl
shl cl, 4
or cl, al
mov byte [ebx], cl
mov edx, dword [esi + 0x4b4]
inc edx
mov dword [esi + 0x4b4], edx
mov ecx, dword [esi + 0x4b8]
mov eax, edx
cmp eax, ecx
jne 0x4359ec
mov dword [esi + 0x4b4], ebp
mov dword [esi + 0x4b8], ebp
mov dword [esi + 0x124], ebp
mov al, byte [ebx + 1]
and al, 0xef
mov byte [ebx + 1], al
mov eax, dword [esi + 0x88]
cmp eax, 1
jle 0x435a18
mov edx, dword [0x5adec0]
shl eax, 7
cmp byte [eax + edx - 0x3c], 0x70
jne 0x435a18
mov byte [ebx], 0
mov eax, dword [esi + 0x19c]
cmp eax, ebp
je 0x435a87
cmp eax, 0x8000
jl 0x435a2c
mov byte [ebx], 0
mov eax, dword [esi + 0x19c]
cmp eax, 0x46
jge 0x435a87
dec eax
cmp eax, 0x20
mov dword [esi + 0x19c], eax
je 0x435a49
test byte [ebx + 1], 8
jne 0x435a73
mov dword [esi + 0x18], 0xfffa0000
mov eax, dword [esi + 0x10]
add eax, 0xffff0000
mov dword [esi + 0x10], eax
mov eax, dword [esi + 0x19c]
mov dword [esi + 0xc8], eax
mov ecx, dword [0x5adbc0]
mov dword [esi + 0xcc], ecx
mov al, byte [ebx + 1]
test al, 8
jne 0x435a82
mov dword [esi + 0x19c], ebp
jmp 0x435a87
and al, 0xf7
mov byte [ebx + 1], al
mov eax, dword [esi + 0x6c]
cmp eax, ebp
je 0x435aac
mov edx, dword [0x5adec0]
shl eax, 7
mov eax, dword [eax + edx]
cmp eax, 0x405450
je 0x435aa8
cmp eax, 0x4068a0
jne 0x435aac
and byte [ebx + 1], 0xfd
cmp dword [esi + 0x55c], ebp
jge 0x435abe
mov dword [esi + 0x1a8], 0xffffffba
mov eax, dword [esi + 0x47c]
cmp eax, 8
jne 0x435c03
mov al, byte [ebx]
test al, 0xf
jne 0x435b06
mov dword [esi + 0x1c], ebp
mov eax, dword [esi + 0x14]
cmp eax, ebp
jle 0x435af3
cmp eax, 0x1000
jle 0x435aee
add eax, 0xfffff000
mov dword [esi + 0x14], eax
jmp 0x435b32
mov dword [esi + 0x14], ebp
jmp 0x435b32
jge 0x435b32
cmp eax, 0xfffff000
jge 0x435aee
add eax, 0x1000
mov dword [esi + 0x14], eax
jmp 0x435b32
shl al, 4
test al, al
jle 0x435b1e
mov eax, dword [esi + 0x1c]
cmp eax, 0x2000
jge 0x435b32
add eax, 0x800
jmp 0x435b2f
jge 0x435b32
mov eax, dword [esi + 0x1c]
cmp eax, 0xffffe000
jle 0x435b32
add eax, 0xfffff800
mov dword [esi + 0x1c], eax
mov al, byte [ebx]
shl al, 4
jns 0x435b3f
mov byte [esi + 0x45], 0xff
jmp 0x435b47
test al, al
jle 0x435b47
mov byte [esi + 0x45], 1
mov al, byte [ebx + 1]
shr eax, 1
and eax, 1
mov dword [esi + 0x138], eax
mov eax, dword [esi + 0x144]
je 0x435b6a
cmp eax, 5
jle 0x435b71
mov dword [esi + 0x144], ebp
jmp 0x435b71
inc eax
mov dword [esi + 0x144], eax
mov dword [esi + 0xc0], 0x32
mov al, byte [ebx + 1]
test al, 8
mov eax, dword [esi + 0x70]
je 0x435ba7
cmp eax, ebp
je 0x435b98
mov dword [esi + 0x18], 0xfffe0000
mov dword [esi + 0xb0], ebp
jmp 0x435be1
mov dword [esi + 0x18], 0xffff0000
mov dword [esi + 0xb0], ebp
jmp 0x435be1
cmp eax, ebp
je 0x435bba
movsx eax, byte [ebx]
sar eax, 4
inc eax
shl eax, 0xa
mov dword [esi + 0x20], eax
jmp 0x435bc9
movsx ecx, byte [ebx]
sar ecx, 4
add ecx, 2
shl ecx, 9
mov dword [esi + 0x20], ecx
mov edx, dword [esi + 0x20]
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 0xb0]
add ecx, edx
inc eax
mov dword [esi + 0x18], ecx
mov dword [esi + 0xb0], eax
mov al, byte [ebx]
pop edi
shl al, 4
movsx ecx, al
sar ecx, 4
mov dword [esi + 0x120], ecx
movsx edx, byte [ebx]
sar edx, 4
mov dword [esi + 0x11c], edx
pop esi
pop ebp
pop ebx
ret
cmp eax, 0x2f
mov eax, dword [esi + 0x488]
jne 0x435e92
cmp eax, ebp
je 0x435c1d
dec eax
mov dword [esi + 0x488], eax
mov eax, dword [esi + 0x190]
cmp eax, ebp
jle 0x435c2e
dec eax
mov dword [esi + 0x190], eax
mov dword [esi + 0xc0], 0x64
mov al, byte [ebx + 1]
test al, 2
je 0x435cc8
mov eax, dword [esi + 0x144]
mov ecx, dword [esi + 0x13c]
cmp eax, ecx
jl 0x435cc8
cmp dword [esi + 0xfc], ebp
jne 0x435cc8
cmp dword [esi + 0x138], ebp
jne 0x435cc8
mov edi, 1
push ebp
mov dword [esi + 0x138], edi
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0xc]
push ebp
push 0xde
push ecx
push edx
call fcn.00477d10
mov al, byte [ebx]
add esp, 0x14
mov cl, al
and cl, 0xf0
jge 0x435ca0
test al, 0xf
jne 0x435ca0
mov dword [esi + 0x148], ebp
mov dword [esi + 0x144], ebp
jmp 0x435ce2
test cl, cl
jge 0x435cb6
test al, 0xf
je 0x435cb6
mov dword [esi + 0x148], edi
mov dword [esi + 0x144], ebp
jmp 0x435ce2
mov dword [esi + 0x148], 2
mov dword [esi + 0x144], ebp
jmp 0x435ce2
mov ecx, dword [esi + 0x144]
inc ecx
mov dword [esi + 0x144], ecx
mov al, byte [ebx + 1]
test al, 2
jne 0x435ce2
mov dword [esi + 0x138], ebp
cmp dword [esi + 0x144], 0x44
jle 0x435d10
cmp dword [esi + 0x1a4], ebp
jne 0x435d10
mov al, byte [ebx]
test al, 0xf
je 0x435d10
shl al, 4
jns 0x435d07
mov dword [esi + 0x1c], 0xffffd120
jmp 0x435d3b
mov dword [esi + 0x1c], 0x2ee0
jmp 0x435d3b
mov dword [esi + 0x1c], ebp
mov eax, dword [esi + 0x14]
cmp eax, 0x3e80
jle 0x435d27
add eax, 0xffffc180
mov dword [esi + 0x14], eax
jmp 0x435d3b
cmp eax, 0xffffc180
jge 0x435d38
add eax, 0x3e80
mov dword [esi + 0x14], eax
jmp 0x435d3b
mov dword [esi + 0x14], ebp
mov al, byte [ebx]
shl al, 4
jns 0x435d48
mov byte [esi + 0x45], 0xff
jmp 0x435d50
test al, al
jle 0x435d50
mov byte [esi + 0x45], 1
test byte [ebx + 1], 8
je 0x435e28
cmp dword [esi + 0xfc], ebp
jne 0x435e6a
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0xc]
push ebp
push 0x28
push 0x7d
push eax
push ecx
mov dword [esi + 0xb4], ebp
call fcn.00477d10
mov edx, dword [0x4df9c0]
mov ecx, 0xa
push ebp
push ebp
lea eax, [edx + 1]
cdq
idiv ecx
mov dword [0x4df9c0], edx
mov eax, dword [esi + 0x10]
mov edx, dword [edx*4 + 0x4c67f4]
mov ecx, dword [esi + 0xc]
push edx
push eax
push ecx
call fcn.00477d10
mov eax, dword [0x62bdd0]
add esp, 0x28
mov dl, al
sub al, 0x2c
add dl, 4
and eax, 0xff
and edx, 0xff
mov eax, dword [eax + 0x62c040]
mov ecx, edx
mov dword [0x62bdd0], ecx
mov edx, dword [ecx + 0x62c040]
xor edx, eax
test al, 1
mov dword [ecx + 0x62c040], edx
je 0x435dfd
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0xc]
push ebp
push ebp
push 0xd7
push eax
push ecx
call fcn.00477d10
add esp, 0x14
mov eax, dword [esi + 0x14]
cmp eax, ebp
jg 0x435e06
neg eax
cdq
and edx, 3
mov dword [esi + 0xb0], ebp
add eax, edx
mov edx, dword [esi + 0xbc]
sar eax, 2
sub edx, eax
mov dword [esi + 0x18], edx
mov dword [esi + 0xc8], ebp
jmp 0x435e6a
cmp dword [esi + 0xc8], ebp
jne 0x435e64
cmp dword [esi + 0x18c], ebp
jne 0x435e64
mov eax, dword [esi + 0x18]
cmp eax, 0xffff0000
jge 0x435e4c
add eax, 0x8000
mov dword [esi + 0x18], eax
jmp 0x435e64
cmp eax, 0xffffc000
jge 0x435e5d
add eax, 0x4000
mov dword [esi + 0x18], eax
jmp 0x435e64
cmp eax, ebp
jge 0x435e64
mov dword [esi + 0x18], ebp
inc dword [esi + 0xb0]
test byte [ebx], 0xff
jne 0x435e87
test byte [ebx + 1], 0xa
jne 0x435e87
mov eax, dword [esi + 0x124]
pop edi
inc eax
mov dword [esi + 0x124], eax
pop esi
pop ebp
pop ebx
ret
mov dword [esi + 0x124], ebp
pop edi
pop esi
pop ebp
pop ebx
ret
cmp eax, ebp
je 0x435e9d
dec eax
mov dword [esi + 0x488], eax
mov eax, dword [esi + 0x190]
cmp eax, ebp
jle 0x435eae
dec eax
mov dword [esi + 0x190], eax
cmp dword [esi + 0x98], 2
jne 0x435ed5
mov dword [esi + 0x1c], ebp
mov dword [esi + 0x14], ebp
mov al, byte [ebx]
shl al, 4
jns 0x435eca
mov byte [esi + 0x45], 0xff
jmp 0x435ed2
test al, al
jle 0x435ed2
mov byte [esi + 0x45], 1
and byte [ebx], 0xf0
mov eax, dword [esi + 0x88]
mov edi, 0xe
cmp eax, 0xffffffff
mov edx, 0x40000
mov bl, 0x11
mov ecx, 0x20000
jne 0x4360c7
cmp dword [esi + 0x190], ebp
jne 0x4360c7
cmp dword [esi + 0x16c], ebp
jge 0x4360c7
cmp dword [esi + 0x168], ebp
jge 0x4360c7
mov eax, dword [esi + 0x14]
cmp eax, ebp
jg 0x435f22
neg eax
cdq
and edx, 0xffff
add eax, edx
sar eax, 0x10
add eax, 8
cmp eax, 0x30
jle 0x435f3b
mov eax, 0x30
cmp dword [esi + 0xfc], ebp
je 0x435f61
mov ecx, dword [esi + 0x108]
shl ecx, 6
add ecx, 0x4650
cmp ecx, 0x6590
jle 0x435f66
mov ecx, 0x6590
jmp 0x435f66
mov ecx, 0x4650
mov edx, dword [esi + 0x15c]
push edx
push ecx
mov ecx, dword [esi + 0xc]
push eax
mov eax, dword [esi + 0x10]
push 0x3f
push eax
push ecx
call fcn.00477e30
mov dword [esi + 0x15c], eax
mov eax, dword [esi + 0x158]
add esp, 0x18
cmp eax, 2
jne 0x435fab
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 0xc]
push 0x4099
push 0x64
push 0x41
push edx
push eax
call fcn.00477d10
add esp, 0x14
cmp dword [esi + 0x158], 0xc
jne 0x435fee
mov eax, dword [esi + 0x14]
cmp eax, ebp
jg 0x435fbd
neg eax
cdq
and edx, 0xffff
add eax, edx
sar eax, 0x10
add eax, 0x20
cmp eax, 0x30
jle 0x435fd6
mov eax, 0x30
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0xc]
push 0x4099
push eax
push 0x40
push ecx
push edx
call fcn.00477d10
add esp, 0x14
mov eax, dword [esp + 0x18]
mov al, byte [eax]
test al, 0xf
jne 0x436041
mov dword [esi + 0x1c], ebp
mov ecx, dword [esi + 0x14]
mov eax, ecx
shl eax, 5
sub eax, ecx
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
mov dword [esi + 0x14], eax
mov eax, dword [esi + 0x158]
cmp eax, edi
jge 0x436388
dec eax
cmp eax, ebp
mov dword [esi + 0x158], eax
jg 0x436388
mov cl, byte [esi + 0x45]
mov dword [esi + 0x158], edi
neg cl
mov byte [esi + 0x45], cl
jmp 0x436388
shl al, 4
test al, al
jle 0x436094
mov eax, dword [esi + 0x158]
mov dword [esi + 0x1c], 0x2000
cmp eax, edi
jge 0x43606e
dec eax
cmp eax, ebp
mov dword [esi + 0x158], eax
jg 0x43606e
mov dword [esi + 0x158], edi
mov byte [esi + 0x45], 1
mov al, byte [esi + 0x45]
test al, al
jge 0x436388
cmp dword [esi + 0x158], edi
jne 0x436388
mov dword [esi + 0x158], 0xd
jmp 0x436388
mov eax, dword [esi + 0x158]
mov dword [esi + 0x1c], 0xffffe000
cmp eax, edi
jge 0x4360ba
dec eax
cmp eax, ebp
mov dword [esi + 0x158], eax
jg 0x4360ba
mov dword [esi + 0x158], edi
mov byte [esi + 0x45], 0xff
mov al, byte [esi + 0x45]
test al, al
jle 0x436388
jmp 0x436079
cmp eax, 1
jle 0x4361d2
mov edx, dword [0x5adec0]
shl eax, 7
add eax, edx
mov ecx, dword [eax - 0x80]
cmp ecx, 0x40eac0
jne 0x436159
mov eax, dword [esp + 0x18]
mov al, byte [eax]
test al, 0xf
jne 0x436110
mov dword [esi + 0x1c], ebp
mov ecx, dword [esi + 0x14]
lea eax, [ecx*8]
sub eax, ecx
cdq
and edx, 7
add eax, edx
sar eax, 3
mov dword [esi + 0x14], eax
jmp 0x436388
shl al, 4
test al, al
jle 0x436138
mov dword [esi + 0x1c], 0x1000
mov eax, dword [esi + 0x14]
cmp eax, 0x40000
jle 0x436388
mov dword [esi + 0x14], 0x40000
jmp 0x436388
mov dword [esi + 0x1c], 0xfffff000
mov eax, dword [esi + 0x14]
cmp eax, 0xfffc0000
jle 0x436388
mov dword [esi + 0x14], 0xfffc0000
jmp 0x436388
cmp ecx, 0x406d40
jne 0x436388
cmp dword [esi + 0xf8], ebp
jne 0x43617b
mov byte [eax - 0x3f], bl
mov dword [esi + 0x88], ebp
jmp 0x436388
mov ecx, dword [eax - 0x74]
mov edx, dword [esi + 0xc]
sub ecx, edx
mov edx, 0x280000
mov dword [esi + 0x14], ecx
mov eax, dword [esi + 0x10]
mov ecx, dword [0x5adec0]
sub edx, eax
mov eax, dword [esi + 0x88]
shl eax, 7
mov eax, dword [eax + ecx - 0x70]
add eax, edx
cmp eax, ebp
mov dword [esi + 0x18], eax
jle 0x4361bf
add eax, 0xffffa000
mov dword [esi + 0x20], ebp
mov dword [esi + 0x18], eax
mov dword [esi + 0x1c], ebp
jmp 0x436388
add eax, 0xffffe000
mov dword [esi + 0x20], ebp
mov dword [esi + 0x18], eax
mov dword [esi + 0x1c], ebp
jmp 0x436388
cmp dword [esi + 0x4c0], ebp
je 0x436292
mov eax, dword [esp + 0x18]
mov dword [esi + 0xc0], 0x32
mov dword [esi + 0x74], ebp
mov dword [esi + 0x78], ebp
mov dword [esi + 0x124], ebp
mov al, byte [eax]
test al, 0xf
jne 0x43621c
mov dword [esi + 0x1c], ebp
mov ecx, dword [esi + 0x14]
mov eax, ecx
shl eax, 5
sub eax, ecx
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
mov dword [esi + 0x14], eax
jmp 0x436388
shl al, 4
test al, al
jle 0x436254
mov dword [esi + 0x1c], 0x1000
mov eax, dword [esi + 0x70]
cmp eax, ebp
mov eax, dword [esi + 0x14]
je 0x436244
cmp eax, edx
jle 0x436388
mov dword [esi + 0x14], edx
jmp 0x436388
cmp eax, ecx
jle 0x436388
mov dword [esi + 0x14], ecx
jmp 0x436388
mov dword [esi + 0x1c], 0xfffff000
mov eax, dword [esi + 0x70]
cmp eax, ebp
je 0x43627a
mov ecx, dword [esi + 0x14]
mov eax, 0xfffc0000
cmp ecx, eax
jge 0x436388
mov dword [esi + 0x14], eax
jmp 0x436388
mov ecx, dword [esi + 0x14]
mov eax, 0xfffe0000
cmp ecx, eax
jge 0x436388
mov dword [esi + 0x14], eax
jmp 0x436388
cmp dword [esi + 0x74], ebp
jl 0x436388
cmp dword [esi + 0x190], ebp
jne 0x436388
mov eax, dword [esp + 0x18]
test byte [eax], 0xf
je 0x4362b3
mov dword [esi + 0x74], ebp
mov al, byte [eax]
test al, 0xf
jne 0x43632f
mov eax, dword [esi + 0x98]
mov dword [esi + 0x1c], ebp
cmp eax, ebp
je 0x4362ce
mov dword [esi + 0x14], ebp
jmp 0x436388
mov eax, dword [esi + 0x14]
cmp eax, ebp
jle 0x436302
cmp dword [esi + 0x70], ebp
je 0x4362ee
cmp eax, 0x6d60
jle 0x4362c6
add eax, 0xffff92a0
mov dword [esi + 0x14], eax
jmp 0x436388
cmp eax, 0x1f40
jle 0x4362c6
add eax, 0xffffe0c0
mov dword [esi + 0x14], eax
jmp 0x436388
jge 0x436388
cmp dword [esi + 0x70], ebp
je 0x43631e
cmp eax, 0xffff92a0
jge 0x4362c6
add eax, 0x6d60
mov dword [esi + 0x14], eax
jmp 0x436388
cmp eax, 0xffffe0c0
jge 0x4362c6
add eax, 0x1f40
mov dword [esi + 0x14], eax
jmp 0x436388
cmp dword [esi + 0x70], ebp
je 0x43635f
shl al, 4
jns 0x43634a
cmp dword [esi + 0x1a4], ebp
jne 0x43634a
mov dword [esi + 0x1c], 0xffffa240
jmp 0x436388
test al, al
jle 0x436388
cmp dword [esi + 0x1a4], ebp
jne 0x436388
mov dword [esi + 0x1c], 0x5dc0
jmp 0x436388
shl al, 4
jns 0x436375
cmp dword [esi + 0x1a4], ebp
jne 0x436375
mov dword [esi + 0x1c], 0xffffd120
jmp 0x436388
test al, al
jle 0x436388
cmp dword [esi + 0x1a4], ebp
jne 0x436388
mov dword [esi + 0x1c], 0x2ee0
cmp dword [esi + 0x158], ebp
jne 0x4363a9
mov ecx, dword [esp + 0x18]
mov al, byte [ecx]
shl al, 4
jns 0x4363a1
mov byte [esi + 0x45], 0xff
jmp 0x4363a9
test al, al
jle 0x4363a9
mov byte [esi + 0x45], 1
mov ecx, dword [esi + 0xc4]
mov eax, dword [esi + 0x1a4]
inc ecx
cmp eax, ebp
mov dword [esi + 0xc4], ecx
jne 0x436ee2
cmp dword [0x5f37e4], ebp
jne 0x436ee2
cmp dword [esi + 0xe4], ebp
jg 0x436ee2
mov ecx, dword [esi + 0x98]
mov eax, 0x78
cmp ecx, ebp
jne 0x43641c
cmp dword [esi + 0x9c], ebp
jne 0x43641c
mov edx, dword [esi + 0xfc]
cmp edx, ebp
mov edx, dword [esp + 0x18]
je 0x43642a
test byte [edx], 0xf0
jle 0x43642f
cmp dword [esi + 0xc0], eax
jl 0x43642a
mov dword [esi + 0xc0], ebp
mov dword [esi + 0x84], ebp
jmp 0x43642a
mov edx, dword [esp + 0x18]
mov dword [esi + 0xc0], 0x32
test byte [edx], 0xf0
jg 0x436446
cmp dword [esi + 0xfc], ebp
je 0x436446
cmp dword [esi + 0xc0], 0x32
jl 0x436446
mov dword [esi + 0xc0], eax
mov eax, dword [esi + 0xc0]
cmp eax, 0x28
jle 0x436456
cmp eax, 0x32
jl 0x43645d
inc eax
mov dword [esi + 0xc0], eax
cmp dword [esi + 0xc0], 0x32
jge 0x43646f
mov dword [esi + 0xc4], ebp
mov dword [esi + 0x7c], ebp
test byte [edx + 1], 0x10
je 0x43648c
mov ebx, dword [esi + 0x70]
mov eax, 0x20
inc ebx
mov edi, ebx
mov dword [esi + 0x70], ebx
cmp edi, eax
jle 0x4364a0
mov dword [esi + 0x70], eax
jmp 0x4364a0
mov eax, dword [esi + 0x70]
cmp eax, ebp
jle 0x4364a0
add eax, 0xfffffffe
cmp eax, ebp
mov dword [esi + 0x70], eax
jge 0x4364a0
mov dword [esi + 0x70], ebp
test byte [edx + 1], 0x10
mov eax, dword [esi + 0x78]
je 0x4364c4
cmp eax, 2
jle 0x4364bf
cmp eax, 0xf
jge 0x4364bf
cmp dword [esi + 0x74], ebp
jne 0x4364bf
mov dword [esi + 0x74], 1
mov dword [esi + 0x78], ebp
jmp 0x4364c8
inc eax
mov dword [esi + 0x78], eax
cmp dword [esi + 0x14], ebp
jne 0x436596
cmp dword [esi + 0x1c], ebp
jne 0x436596
cmp dword [esi + 0x18], ebp
jne 0x436596
cmp ecx, ebp
jne 0x436596
mov ecx, dword [esi + 0x74]
cmp ecx, ebp
jle 0x436520
mov eax, dword [esi + 0x78]
cmp eax, ebp
jle 0x436520
cmp eax, 0xf
jge 0x436520
test cl, 3
je 0x43651b
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 0xc]
push ebp
push 0x14
push 0x95
push edx
push eax
call fcn.00477d10
add esp, 0x14
inc dword [esi + 0x74]
jmp 0x436596
mov eax, dword [esi + 0x78]
cmp eax, 0xf
jle 0x436596
cmp ecx, 0x14
jle 0x43658e
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0xc]
push ebp
push ebp
push 0xb
push ecx
push edx
call fcn.00477d10
mov ecx, dword [esi + 0x74]
mov eax, 0x50
add esp, 0x14
cmp ecx, eax
jle 0x436550
mov dword [esi + 0x74], eax
movsx eax, byte [esi + 0x45]
mov ecx, dword [esi + 0x74]
imul eax, ecx
shl eax, 0x10
cdq
and edx, 3
add eax, edx
sar eax, 2
mov dword [esi + 0x14], eax
movsx eax, byte [esi + 0x45]
imul eax, ecx
shl eax, 0xb
cdq
and edx, 0xf
add eax, edx
sar eax, 4
mov dword [esi + 0x1c], eax
mov eax, 0xffffff06
sub eax, ecx
shl eax, 2
mov dword [esi + 0x74], eax
jmp 0x436596
cmp eax, 0xf
jle 0x436596
mov dword [esi + 0x74], ebp
mov eax, dword [esi + 0x9c]
mov ecx, dword [esp + 0x18]
cmp eax, ebp
mov ebx, 4
mov edi, 0xfff80000
je 0x436615
test byte [ecx + 1], 0xa
je 0x436615
mov edx, dword [0x5adec0]
shl eax, 7
mov byte [eax + edx + 0x41], 1
mov eax, dword [esi + 0x9c]
mov edx, dword [0x5adec0]
shl eax, 7
mov dword [eax + edx + 0x24], 0x23
mov al, byte [ecx + 1]
test al, 8
je 0x4365f0
mov edx, dword [esi + 0x18]
add edx, edi
mov dword [esi + 0x18], edx
mov al, byte [ecx + 1]
and al, 0xf7
mov byte [ecx + 1], al
test byte [ecx + 1], 2
je 0x43660a
mov edx, dword [esi + 0x18]
add edx, 0xffff0000
mov dword [esi + 0x18], edx
mov al, byte [ecx + 1]
and al, 0xfd
mov byte [ecx + 1], al
mov dword [esi + 0x9c], ebp
jmp 0x436709
test byte [ecx + 1], 2
je 0x4366ea
cmp dword [esi + 0xc0], 0x32
jl 0x4366ea
cmp dword [esi + 0x14], ebp
jne 0x43665a
cmp dword [esi + 0x18], ebp
jne 0x43665a
cmp dword [esi + 0x11c], ebp
jge 0x43665a
cmp dword [esi + 0x148], ebp
jne 0x43664e
cmp dword [esi + 0x470], ebp
jg 0x43665a
mov dword [esi + 0x14c], 8
jmp 0x436660
mov dword [esi + 0x14c], ebp
mov eax, dword [esi + 0x148]
cmp eax, ebp
jne 0x436691
cmp dword [esi + 0x470], ebp
jle 0x436691
cmp dword [esi + 0x144], 8
jl 0x436691
mov dword [esi + 0x138], 1
mov dword [esi + 0x144], 0xffffffff
jmp 0x436709
cmp eax, 3
je 0x4366c5
cmp eax, ebx
je 0x4366c5
cmp eax, 6
je 0x4366c5
mov eax, dword [esi + 0x144]
mov edx, dword [esi + 0x13c]
cmp eax, edx
jl 0x436709
mov dword [esi + 0x138], 1
mov dword [esi + 0x144], 0xffffffff
jmp 0x436709
cmp dword [esi + 0x140], ebp
jne 0x436709
mov eax, 1
mov dword [esi + 0x138], eax
mov dword [esi + 0x144], 0xffffffff
mov dword [esi + 0x140], eax
jmp 0x436709
mov eax, dword [esi + 0x13c]
mov edx, dword [esi + 0x144]
add eax, 0xfffffffb
mov dword [esi + 0x140], ebp
cmp edx, eax
jge 0x436709
mov dword [esi + 0x144], eax
mov edx, dword [esi + 0x144]
inc edx
mov dword [esi + 0x144], edx
mov al, byte [ecx + 1]
test bl, al
je 0x436759
cmp dword [esi + 0x17c], ebp
jne 0x43675f
xor ecx, ecx
mov eax, dword [esi + 0x148]
mov ebp, 0xa
inc eax
cdq
idiv ebp
xor ebp, ebp
mov dword [esi + 0x148], edx
cmp dword [esi + edx*4 + 0x400], ebp
jg 0x43674d
inc ecx
cmp ecx, 0xa
jl 0x436727
mov dword [esi + 0x17c], 1
jmp 0x43675f
mov dword [esi + 0x17c], ebp
mov ecx, dword [esp + 0x18]
test byte [ecx + 1], 8
je 0x436ba1
cmp dword [esi + 0x190], ebp
jne 0x436ba1
cmp dword [esi + 0x4c0], ebp
je 0x436823
mov edx, dword [0x5f37c4]
mov eax, dword [esi + 0x10]
add edx, 0x200000
cmp eax, edx
jge 0x436beb
cmp dword [esi + 0x47c], 0x3d
jne 0x4367eb
mov eax, dword [0x62bdd0]
push ebp
mov cl, al
sub al, 0x2c
add cl, bl
and eax, 0xff
and ecx, 0xff
push 0x28
mov eax, dword [eax + 0x62c040]
mov dword [0x62bdd0], ecx
mov edx, dword [ecx + 0x62c040]
xor edx, eax
and eax, 3
add eax, 0x12e
mov dword [ecx + 0x62c040], edx
mov edx, dword [esi + 0x10]
push eax
mov eax, dword [esi + 0xc]
push edx
push eax
jmp 0x4367f5
mov ecx, dword [esi + 0xc]
push ebp
push 0x28
push 0x7d
push eax
push ecx
call fcn.00477d10
mov edx, dword [esi + 0xbc]
add esp, 0x14
sub edx, 0x40000
mov dword [esi + 0x4c0], ebp
mov dword [esi + 0x18], edx
mov dword [esi + 0xc8], ebp
mov dword [esi + 0xb4], ebp
jmp 0x436beb
mov ecx, dword [esi + 0x88]
cmp ecx, 1
jle 0x436839
mov dword [esi + 0xb0], ebp
jmp 0x436beb
mov edx, dword [esi + 0x18]
cmp edx, ebp
jle 0x4368bc
mov eax, dword [esi + 0xb0]
cmp eax, 5
jl 0x4368bc
cmp eax, 0x1e
jge 0x4368bc
cmp dword [esi + 0x47c], 0x59
jne 0x4368a3
cmp dword [esi + 0xb4], ebp
jne 0x436beb
mov dword [esi + 0x14], ebp
mov dword [esi + 0x18], edi
mov edx, dword [esi + 0x10]
push ebp
add edx, 0xfffc0000
push ebp
mov dword [esi + 0x10], edx
mov dword [esi + 0xc8], ebp
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0xc]
push 0xb1
push eax
push ecx
mov dword [esi + 0xb4], 1
call fcn.00477d10
add esp, 0x14
jmp 0x436beb
mov dword [esi + 0x84], 0x46
mov dword [esi + 0xb0], 0x1e
jmp 0x436beb
cmp ecx, ebp
jne 0x436beb
cmp dword [esi + 0xfc], ebp
jne 0x436a8e
mov eax, dword [esi + 0x19c]
mov dword [esi + 0xb4], ebp
cmp eax, 0x8000
jl 0x4369bb
lea ecx, [eax + eax*4 - 0x28000]
lea edx, [ecx + ecx*8]
lea eax, [eax + edx*8 - 0x8000]
mov edx, dword [esp + 0x14]
add edx, 0x8000
mov dword [eax*4 + 0x5c8518], 0xfff00000
mov eax, dword [esi + 0x19c]
sub eax, 0x8000
lea ecx, [eax + eax*4]
lea ecx, [ecx + ecx*8]
lea eax, [eax + ecx*8]
mov ecx, dword [eax*4 + 0x5c8510]
add ecx, 0xfffc0000
mov dword [eax*4 + 0x5c8510], ecx
mov eax, dword [esi + 0x19c]
sub eax, 0x8000
lea ecx, [eax + eax*4]
lea ecx, [ecx + ecx*8]
lea eax, [eax + ecx*8]
mov dword [eax*4 + 0x5c85c8], edx
mov eax, dword [esi + 0x19c]
sub eax, 0x8000
lea ecx, [eax + eax*4]
lea ecx, [ecx + ecx*8]
lea edx, [eax + ecx*8]
mov eax, dword [0x5adbc0]
mov dword [edx*4 + 0x5c85cc], eax
mov eax, dword [esi + 0x19c]
sub eax, 0x8000
lea ecx, [eax + eax*4]
lea ecx, [ecx + ecx*8]
lea edx, [eax + ecx*8]
mov dword [edx*4 + 0x5c8624], ebp
mov eax, dword [esi + 0x19c]
sub eax, 0x8000
lea ecx, [eax + eax*4]
lea ecx, [ecx + ecx*8]
lea edx, [eax + ecx*8]
mov dword [edx*4 + 0x5c8680], ebp
mov dword [esi + 0x19c], 0x28
mov dword [esi + 0xb0], ebp
jmp 0x436beb
cmp dword [esi + 0x7c], ebx
jle 0x4369e8
cmp dword [esi + 0x14], ebp
jne 0x4369e8
cmp dword [esi + 0xb8], ebp
jne 0x4369d7
mov dword [esi + 0xb8], 1
mov dword [esi + 0xc8], ebp
mov dword [esi + 0xb0], ebp
jmp 0x436beb
cmp dword [esi + 0x48c], ebp
je 0x4369fc
cmp dword [esi + 0x490], ebx
je 0x436b99
cmp dword [esi + 0x47c], 0x3d
jne 0x436a4b
mov eax, dword [0x62bdd0]
push ebp
mov cl, al
sub al, 0x2c
add cl, bl
and eax, 0xff
and ecx, 0xff
push 0x28
mov eax, dword [eax + 0x62c040]
mov dword [0x62bdd0], ecx
mov edx, dword [ecx + 0x62c040]
xor edx, eax
and eax, 3
add eax, 0x12e
mov dword [ecx + 0x62c040], edx
mov edx, dword [esi + 0x10]
push eax
mov eax, dword [esi + 0xc]
push edx
push eax
jmp 0x436a58
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0xc]
push ebp
push 0x28
push 0x7d
push ecx
push edx
call fcn.00477d10
mov eax, dword [esi + 0x14]
add esp, 0x14
cmp eax, ebp
jg 0x436a69
neg eax
mov ecx, dword [esi + 0xbc]
mov dword [esi + 0xb0], ebp
cdq
and edx, 3
add eax, edx
sar eax, 2
sub ecx, eax
mov dword [esi + 0x18], ecx
mov dword [esi + 0xc8], ebp
jmp 0x436beb
mov eax, dword [esi + 0x98]
cmp eax, 2
jne 0x436b03
cmp edx, ebp
jne 0x436b99
cmp dword [esi + 0xb0], 8
jle 0x436b99
cmp dword [esi + 0x47c], 0x3d
jne 0x436b64
mov eax, dword [0x62bdd0]
push ebp
mov dl, al
sub al, 0x2c
add dl, bl
and eax, 0xff
and edx, 0xff
push 0x28
mov eax, dword [eax + 0x62c040]
mov ecx, edx
mov dword [0x62bdd0], ecx
mov edx, dword [ecx + 0x62c040]
xor edx, eax
and eax, 3
add eax, 0x12e
mov dword [ecx + 0x62c040], edx
mov ecx, dword [esi + 0xc]
push eax
mov eax, dword [esi + 0x10]
push eax
push ecx
jmp 0x436b71
cmp eax, ebp
je 0x436b99
cmp edx, ebp
jne 0x436b99
cmp dword [esi + 0x47c], 0x3d
jne 0x436b64
mov eax, dword [0x62bdd0]
push ebp
mov dl, al
sub al, 0x2c
add dl, bl
and eax, 0xff
and edx, 0xff
push 0x28
mov eax, dword [eax + 0x62c040]
mov ecx, edx
mov dword [0x62bdd0], ecx
mov edx, dword [ecx + 0x62c040]
xor edx, eax
and eax, 3
add eax, 0x12e
mov dword [ecx + 0x62c040], edx
mov ecx, dword [esi + 0xc]
push eax
mov eax, dword [esi + 0x10]
push eax
push ecx
jmp 0x436b71
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 0xc]
push ebp
push 0x28
push 0x7d
push edx
push eax
call fcn.00477d10
mov ecx, dword [esi + 0xbc]
add esp, 0x14
mov dword [esi + 0x18], ecx
mov eax, dword [esi + 0x10]
add eax, 0xfffc0000
mov dword [esi + 0xb4], ebp
mov dword [esi + 0x10], eax
mov dword [esi + 0xc8], ebp
mov dword [esi + 0xb0], ebp
jmp 0x436beb
cmp dword [esi + 0xc8], ebp
jne 0x436be5
cmp dword [esi + 0x18c], ebp
jne 0x436be5
cmp dword [esi + 0x4c0], ebp
jne 0x436be5
mov eax, dword [esi + 0x18]
cmp eax, 0xffff0000
jge 0x436bcd
add eax, 0x8000
mov dword [esi + 0x18], eax
jmp 0x436be5
cmp eax, 0xffffc000
jge 0x436bde
add eax, 0x4000
mov dword [esi + 0x18], eax
jmp 0x436be5
cmp eax, ebp
jge 0x436be5
mov dword [esi + 0x18], ebp
inc dword [esi + 0xb0]
cmp dword [esi + 0x4c0], ebp
je 0x436c93
mov ecx, dword [esp + 0x18]
mov al, byte [ecx]
test al, 0xf0
jne 0x436c1c
mov edx, dword [esi + 0x18]
mov eax, 0x20000
cmp edx, eax
mov dword [esi + 0x20], ebp
jle 0x436e86
mov dword [esi + 0x18], eax
jmp 0x436e86
cmp dword [esi + 0x70], ebp
je 0x436c5a
movsx edx, al
mov eax, dword [esi + 0x18]
sar edx, 4
shl edx, 0xe
cmp eax, 0xfffc0000
mov dword [esi + 0x20], edx
jge 0x436c43
mov dword [esi + 0x18], 0xfffc0000
jmp 0x436e86
cmp eax, 0x40000
jle 0x436e86
mov dword [esi + 0x18], 0x40000
jmp 0x436e86
movsx eax, al
sar eax, 4
shl eax, 0xd
mov dword [esi + 0x20], eax
mov eax, dword [esi + 0x18]
cmp eax, 0xfffe0000
jge 0x436c7c
mov dword [esi + 0x18], 0xfffe0000
jmp 0x436e86
cmp eax, 0x20000
jle 0x436e86
mov dword [esi + 0x18], 0x20000
jmp 0x436e86
mov eax, dword [esi + 0x88]
cmp eax, ebp
je 0x436e20
cmp eax, 0xffffffff
jne 0x436d9a
mov ecx, dword [esp + 0x18]
mov al, byte [ecx]
test al, 0xf0
jne 0x436cdd
mov edx, dword [esi + 0x18]
mov eax, 0x10000
cmp edx, eax
mov dword [esi + 0x20], 0xffffe400
jle 0x436e14
mov dword [esi + 0x18], eax
mov dword [esi + 0xc0], 0x32
jmp 0x436e86
cmp dword [esi + 0x70], ebp
movsx eax, al
je 0x436d41
mov edx, dword [esi + 0x18]
sar eax, 4
lea eax, [eax + eax*2]
shl eax, 0xe
cmp edx, ebp
mov dword [esi + 0x20], eax
jge 0x436d00
add eax, 0xffffc000
mov dword [esi + 0x20], eax
mov eax, dword [esi + 0x18]
cmp eax, 0xfffc0000
jge 0x436d20
mov dword [esi + 0x18], 0xfffc0000
mov dword [esi + 0xc0], 0x32
jmp 0x436e86
cmp eax, 0x40000
jle 0x436e14
mov dword [esi + 0x18], 0x40000
mov dword [esi + 0xc0], 0x32
jmp 0x436e86
mov edx, dword [esi + 0x18]
sar eax, 4
shl eax, 0xf
cmp edx, ebp
mov dword [esi + 0x20], eax
jge 0x436d59
add eax, 0xffffc000
mov dword [esi + 0x20], eax
mov eax, dword [esi + 0x18]
cmp eax, 0xfffe0000
jge 0x436d79
mov dword [esi + 0x18], 0xfffe0000
mov dword [esi + 0xc0], 0x32
jmp 0x436e86
cmp eax, 0x20000
jle 0x436e14
mov dword [esi + 0x18], 0x20000
mov dword [esi + 0xc0], 0x32
jmp 0x436e86
cmp eax, 1
jge 0x436dc5
mov ecx, dword [esi + 0x15c]
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 0xc]
push ecx
push 0x7d00
push 0x19
push 0x6e
push edx
push eax
call fcn.00477e30
add esp, 0x18
mov dword [esi + 0x15c], eax
mov ecx, dword [esp + 0x18]
test byte [ecx], 0xf0
jne 0x436de3
cmp dword [esi + 0x18], ebp
jge 0x436ddc
mov dword [esi + 0x20], 0xffffe000
jmp 0x436de3
mov dword [esi + 0x20], 0xfffff000
mov al, byte [ecx]
test al, 0xf0
je 0x436e14
cmp dword [esi + 0x70], ebp
je 0x436dfc
movsx edx, al
sar edx, 4
shl edx, 0x11
mov dword [esi + 0x18], edx
jmp 0x436e08
movsx eax, al
sar eax, 4
shl eax, 0x10
mov dword [esi + 0x18], eax
cmp dword [esi + 0x18], ebp
jge 0x436e14
add dword [esi + 0x20], 0xffffc000
mov dword [esi + 0xc0], 0x32
jmp 0x436e86
mov eax, dword [esi + 0x84]
cmp eax, ebp
jle 0x436e7f
mov ecx, dword [esi + 0x15c]
mov edx, dword [esi + 0x10]
dec eax
push ecx
push 0x7d00
mov dword [esi + 0x84], eax
mov eax, dword [esi + 0xc]
push 0x19
push 0x6e
push edx
push eax
call fcn.00477e30
mov dword [esi + 0x15c], eax
mov eax, dword [esi + 0x18]
add esp, 0x18
cmp eax, ebp
jge 0x436e67
mov dword [esi + 0x20], 0x6000
jmp 0x436e6e
mov dword [esi + 0x20], 0x200
mov ecx, dword [esi + 0x18]
mov eax, 0x10000
cmp ecx, eax
jle 0x436e82
mov dword [esi + 0x18], eax
jmp 0x436e82
mov dword [esi + 0x20], ebp
mov ecx, dword [esp + 0x18]
test byte [ecx], 0xf0
jle 0x436e9a
cmp dword [esi + 0x98], ebp
je 0x436e9a
mov dword [esi + 0x18], 0x40000
mov al, byte [ecx + 1]
test al, 0xe
jne 0x436eb4
and al, 0x10
cmp al, 0x10
je 0x436eb4
test byte [ecx], 0xff
jne 0x436eb4
inc dword [esi + 0x124]
jmp 0x436ec0
mov dword [esi + 0x180], ebp
mov dword [esi + 0x124], ebp
mov dl, byte [ecx]
pop edi
shl dl, 4
movsx eax, dl
sar eax, 4
mov dword [esi + 0x120], eax
movsx ecx, byte [ecx]
sar ecx, 4
mov dword [esi + 0x11c], ecx
pop esi
pop ebp
pop ebx
ret
mov edi, dword [esi + 0x78]
mov dword [esi + 0xc0], 0x32
mov edx, dword [esi + 0x144]
inc edi
inc edx
mov dword [esi + 0x78], edi
mov dword [esi + 0x144], edx
mov dword [esi + 0x138], ebp
mov dword [esi + 0xc8], ebp
mov eax, dword [esi + 0x88]
cmp eax, 1
mov dword [esi + 0x74], ebp
jle 0x436f37
mov edx, dword [0x5adec0]
shl eax, 7
add eax, edx
cmp dword [eax - 0x80], 0x40eac0
jne 0x436f31
mov byte [eax - 0x3f], bl
mov dword [esi + 0x88], ebp
mov dword [esi + 0x124], ebp
mov eax, dword [esi + 0x70]
cmp eax, ebp
mov dword [esi + 0x120], ebp
mov dword [esi + 0x11c], ebp
jle 0x436f5d
add eax, 0xfffffffc
cmp eax, ebp
mov dword [esi + 0x70], eax
jge 0x436f5d
mov dword [esi + 0x70], ebp
pop edi
pop esi
pop ebp
pop ebx
ret