Function at 0x20836f90
Capabilities:
Encode data using base64
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x370
push ebx
mov ebx, dword [esp + 0x378]
push ebp
mov ebp, dword [esp + 0x380]
mov eax, dword [ebx + 0xc]
push esi
xor esi, esi
cmp word [ebp], 0x40
push edi
mov dword [esp + 0x14], eax
mov dword [esp + 0x7c], esi
jbe 0x20836fd9
push 0x40
push 0x2072457c
push ebx
call fcn.207e2030
add esp, 0xc
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x370
ret
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x27c]
lea edx, [esp + 0xec]
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0x38c]
lea ecx, [esp + 0x27c]
push edi
push ebx
mov dword [esp + 0xdc], ebx
mov dword [esp + 0xe0], ecx
mov dword [esp + 0xe4], esi
mov dword [esp + 0xe8], 0xa
mov dword [esp + 0xec], edx
call fcn.208233e0
add esp, 8
cmp edi, esi
je 0x20837075
cmp byte [edi], 0x3d
je 0x2083704c
push esi
lea eax, [esp + 0xd8]
push edi
push eax
call fcn.20838e80
add esp, 0xc
jmp 0x20837075
mov ecx, dword [edi + 8]
push 0x3d
lea edx, [esp + 0xd8]
push ecx
push edx
call fcn.20838f40
mov eax, dword [edi + 0xc]
push 0x3d
lea ecx, [esp + 0xe4]
push eax
push ecx
call fcn.20838f40
add esp, 0x18
movsx eax, word [ebp]
mov ecx, dword [ebx]
lea edx, [eax + eax*8]
mov dword [esp + 0x38], ecx
lea eax, [eax + edx*2]
lea edx, [eax*4 + 0x6c]
push edx
push ecx
call fcn.207e10f0
mov esi, eax
mov eax, dword [esp + 0x40]
add esp, 8
mov dword [esp + 0x58], esi
mov cl, byte [eax + 0x1e]
test cl, cl
jne 0x20837151
movsx ecx, word [ebp]
mov edx, dword [esp + 0x14]
mov dword [esi + 0x18], ecx
push edx
mov dword [esi], ebx
mov dword [esi + 8], ebp
call fcn.207e84e0
add esp, 4
mov dword [esi + 0x14], eax
test edi, edi
je 0x208370ef
cmp word [ebp], 0
je 0x208370df
push edi
call fcn.2081fa90
add esp, 4
test eax, eax
je 0x208370ef
mov eax, dword [esi + 0x14]
push 8
push eax
push edi
push ebx
call fcn.20823ea0
add esp, 0x10
movsx ecx, word [ebp]
test ecx, ecx
jle 0x2083711f
lea eax, [ebp + 0x20]
mov edi, dword [esp + 0x27c]
mov edx, dword [eax]
add eax, 0x30
mov dword [esp + edi*4 + 0x280], edx
mov ebx, dword [esp + 0x27c]
inc ebx
dec ecx
mov dword [esp + 0x27c], ebx
jne 0x208370fa
mov eax, dword [esp + 0xdc]
lea edi, [eax - 1]
test edi, edi
jl 0x20837142
lea ecx, [esp + 0xd4]
push edi
push ecx
push ebp
call fcn.208390b0
add esp, 0xc
dec edi
jns 0x2083712d
mov edx, dword [esp + 0x38]
mov al, byte [edx + 0x1e]
test al, al
je 0x208371ec
mov eax, dword [esp + 0xd4]
mov ecx, dword [esp + 0xdc]
mov edi, dword [esp + 0xe4]
mov ebp, dword [eax]
lea eax, [ecx - 1]
test eax, eax
jl 0x20837191
lea ebx, [eax + 1]
test byte [edi + 0xc], 1
je 0x20837184
mov edx, dword [edi]
push edx
push ebp
call fcn.2081eea0
add esp, 8
add edi, 0x28
dec ebx
jne 0x20837172
mov edi, dword [esp + 0xe4]
lea eax, [esp + 0xec]
cmp edi, eax
je 0x208371a6
push edi
push ebp
call fcn.207e0aa0
add esp, 8
test esi, esi
je 0x208371df
mov ecx, dword [esi]
mov eax, dword [esi + 0x18]
xor edi, edi
mov ebp, dword [ecx]
test eax, eax
jle 0x208371d5
lea ebx, [esi + 0x68]
mov eax, dword [ebx]
test eax, eax
je 0x208371ca
push eax
push ebp
call fcn.207e0aa0
add esp, 8
mov eax, dword [esi + 0x18]
inc edi
add ebx, 0x4c
cmp edi, eax
jl 0x208371ba
push esi
push ebp
call fcn.207e0aa0
add esp, 8
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x370
ret
or eax, 0xffffffff
xor ecx, ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x38], eax
add esi, 0x20
movsx eax, word [ebp]
cmp eax, ecx
mov dword [esp + 0x44], ecx
mov dword [esp + 0x48], ecx
mov dword [esp + 0x24], esi
jle 0x20837ef3
mov esi, dword [esp + 0x44]
xor ecx, ecx
mov dword [esp + 0x54], ecx
mov dword [esp + 0x74], ecx
lea edx, [esi + esi*2]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x60], ecx
mov dword [esp + 0x78], ecx
mov ecx, dword [esp + 0x388]
mov edi, esi
shl edx, 4
cmp esi, eax
mov dword [esp + 0xa0], 0xffffffff
lea edx, [edx + ecx + 8]
mov dword [esp + 0xa4], 0x7fffffff
mov dword [esp + 0x34], edi
mov dword [esp + 0x30], edx
jge 0x20837e1a
mov ebx, dword [esp + 0x390]
jmp 0x20837283
mov ebx, dword [esp + 0x390]
mov edi, dword [esp + 0x34]
mov esi, dword [esp + 0x44]
mov ebp, dword [esp + 0x30]
mov ecx, dword [esp + 0x78]
mov al, byte [ebp + 0x15]
and al, 0xa
neg al
sbb eax, eax
neg eax
test ecx, ecx
mov dword [esp + 0x40], eax
je 0x208372a6
test eax, eax
jne 0x20837e1a
mov eax, dword [esp + 0x27c]
xor ecx, ecx
test eax, eax
jle 0x208372ce
mov edx, dword [ebp + 0x18]
lea eax, [esp + 0x280]
cmp dword [eax], edx
je 0x208372f3
inc ecx
add eax, 4
cmp ecx, dword [esp + 0x27c]
jl 0x208372bd
xor eax, eax
xor edx, edx
mov ecx, dword [esp + 0x28]
and eax, ecx
mov ecx, dword [esp + 0x2c]
and edx, ecx
or eax, edx
jne 0x20837301
cmp edi, esi
jne 0x20837df4
inc dword [esp + 0x44]
jmp 0x20837df4
mov eax, 1
xor edx, edx
call fcn.20848920
jmp 0x208372d2
mov ecx, dword [ebp + 0xc]
mov dword [esp + 0x18], ecx
mov al, byte [ecx + 0x39]
test al, al
je 0x2083767a
lea eax, [edi + edi*8]
test ebx, ebx
lea edx, [edi + eax*2]
mov eax, dword [esp + 0x58]
lea eax, [eax + edx*4 + 0x68]
mov dword [esp + 0x5c], eax
je 0x20837331
mov edx, dword [ebx]
mov dword [esp + 0x20], edx
jmp 0x20837339
mov dword [esp + 0x20], 0
mov ebp, dword [eax]
mov ecx, dword [ecx + 0x40]
test ebp, ebp
mov dword [esp + 0x70], ecx
jne 0x20837496
mov eax, dword [esp + 0xdc]
mov edi, dword [esp + 0x30]
xor esi, esi
test eax, eax
jle 0x20837383
mov eax, dword [esp + 0xe4]
mov edx, dword [edi + 0x18]
mov ecx, dword [esp + 0xdc]
add eax, 0xa
movsx ebx, word [eax - 4]
cmp ebx, edx
jne 0x2083737d
test byte [eax], 0x81
jne 0x2083737d
inc esi
add eax, 0x28
dec ecx
jne 0x2083736f
mov ecx, dword [esp + 0x20]
xor ebx, ebx
test ecx, ecx
mov dword [esp + 0x64], ebx
je 0x208373bd
mov ebp, dword [ecx]
xor eax, eax
test ebp, ebp
jle 0x208373b3
mov edx, dword [ecx + 0xc]
mov ecx, dword [edx]
cmp byte [ecx], 0x95
jne 0x208373b3
mov ecx, dword [ecx + 0x24]
cmp ecx, dword [edi + 0x18]
jne 0x208373b3
inc eax
add edx, 0xc
cmp eax, ebp
jl 0x2083739c
cmp eax, ebp
jne 0x208373bd
mov ebx, ebp
mov dword [esp + 0x64], ebx
mov edi, dword [esp + 0x384]
lea edx, [esi + esi*4]
shl edx, 2
mov ecx, dword [edi]
lea eax, [edx + ebx*8 + 0x30]
push eax
push ecx
call fcn.207e10f0
mov ebp, eax
add esp, 8
test ebp, ebp
jne 0x208373f3
push 0x207181d8
push edi
call fcn.207e2030
add esp, 8
jmp 0x20837664
mov edx, dword [esp + 0x5c]
lea ecx, [ebp + 0x30]
lea eax, [esi + esi*2]
mov dword [edx], ebp
mov dword [ebp], esi
lea edi, [ecx + eax*4]
mov dword [ebp + 8], ebx
mov dword [ebp + 4], ecx
mov dword [ebp + 0xc], edi
lea edx, [edi + ebx*8]
xor esi, esi
mov dword [ebp + 0x10], edx
mov eax, dword [esp + 0xdc]
test eax, eax
jle 0x208374d6
mov eax, dword [esp + 0xe4]
mov edx, dword [esp + 0x30]
add eax, 0xa
add ecx, 4
movsx ebx, word [eax - 4]
cmp ebx, dword [edx + 0x18]
jne 0x20837455
test byte [eax], 0x81
jne 0x20837455
movsx ebx, word [eax - 2]
mov dword [ecx - 4], ebx
mov dword [ecx + 4], esi
mov bl, byte [eax]
mov byte [ecx], bl
add ecx, 0xc
mov ebx, dword [esp + 0xdc]
inc esi
add eax, 0x28
cmp esi, ebx
jl 0x20837436
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 0x64]
test ebx, ebx
jle 0x20837496
xor eax, eax
mov ecx, edi
mov esi, ebx
mov edi, dword [edx + 0xc]
add eax, 0xc
add ecx, 8
dec esi
mov edi, dword [eax + edi - 0xc]
mov edi, dword [edi + 0x28]
mov dword [ecx - 8], edi
mov edi, dword [edx + 0xc]
mov bl, byte [eax + edi - 4]
mov byte [ecx - 4], bl
jne 0x20837476
mov eax, dword [ebp]
mov edi, dword [ebp + 0x10]
mov edx, dword [ebp + 4]
xor esi, esi
test eax, eax
mov dword [esp + 0x68], edi
jle 0x208374eb
add edx, 5
mov eax, dword [edx + 3]
mov ecx, dword [esp + 0xe4]
lea ebx, [eax + eax*4]
mov eax, dword [ecx + ebx*8 + 0x18]
and eax, dword [esp + 0x28]
mov ecx, dword [ecx + ebx*8 + 0x1c]
mov ebx, dword [esp + 0x2c]
and ecx, ebx
or eax, ecx
jne 0x208374dc
mov eax, 1
jmp 0x208374de
mov edx, dword [esp + 0x20]
jmp 0x2083746c
xor eax, eax
mov byte [edx], al
mov eax, dword [ebp]
inc esi
add edx, 0xc
cmp esi, eax
jl 0x208374ac
mov ecx, dword [ebp]
xor eax, eax
shl ecx, 3
mov edx, ecx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [ebp + 0x1c]
test eax, eax
je 0x20837514
mov eax, dword [ebp + 0x18]
push eax
call fcn.207e0a40
add esp, 4
fld qword [0x20734670]
xor ebx, ebx
mov dword [ebp + 0x18], ebx
mov dword [ebp + 0x14], ebx
mov dword [ebp + 0x1c], ebx
mov dword [ebp + 0x20], ebx
call fcn.208487ca
mov dword [ebp + 0x28], eax
mov eax, dword [ebp + 8]
cmp eax, ebx
mov dword [ebp + 0x2c], edx
mov dword [esp + 0x6c], eax
je 0x20837547
cmp dword [esp + 0x48], ebx
je 0x20837547
mov dword [ebp + 8], ebx
mov esi, dword [esp + 0x70]
push ebp
push esi
mov ecx, dword [esi]
call dword [ecx + 0xc]
add esp, 8
cmp eax, ebx
je 0x208375aa
cmp eax, 7
jne 0x2083756d
mov edi, dword [esp + 0x384]
mov edx, dword [edi]
mov byte [edx + 0x1e], 1
jmp 0x208375b1
mov ecx, dword [esi + 8]
cmp ecx, ebx
jne 0x20837592
push eax
call fcn.207c8b00
mov edi, dword [esp + 0x388]
push eax
push 0x20716418
push edi
call fcn.207e2030
add esp, 0x10
jmp 0x208375b1
mov edi, dword [esp + 0x384]
push ecx
push 0x20716418
push edi
call fcn.207e2030
add esp, 0xc
jmp 0x208375b1
mov edi, dword [esp + 0x384]
mov eax, dword [esi + 8]
mov ecx, dword [edi]
push eax
push ecx
call fcn.207e0aa0
mov dword [esi + 8], ebx
mov esi, dword [ebp]
add esp, 8
xor ecx, ecx
cmp esi, ebx
jle 0x208375ea
mov eax, dword [ebp + 4]
mov edx, dword [esp + 0x68]
add eax, 5
cmp byte [eax], 0
jne 0x208375df
cmp dword [edx], ebx
jg 0x2083764e
inc ecx
add eax, 0xc
add edx, 8
cmp ecx, esi
jl 0x208375d6
mov ecx, dword [esp + 0x6c]
mov edx, dword [ebp + 0x2c]
mov dword [ebp + 8], ecx
mov ecx, dword [ebp + 0x28]
mov dword [esp + 0x94], ecx
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x98], edx
mov esi, 0x800000
mov ebp, dword [eax]
test ebp, ebp
je 0x20837620
mov eax, dword [ebp + 0x20]
test eax, eax
je 0x20837620
mov esi, 0x900000
fild qword [esp + 0x94]
xor ebx, ebx
xor edi, edi
fcomp qword [0x20734670]
fnstsw ax
test ah, 0x41
jne 0x20837da7
fld qword [0x20734670]
call fcn.208487ca
mov ecx, eax
jmp 0x20837da7
mov edx, dword [esp + 0x18]
mov eax, dword [edx + 4]
push eax
push 0x2072454c
push edi
call fcn.207e2030
add esp, 0xc
fld qword [0x2072fd90]
call fcn.208487ca
mov ecx, eax
mov dword [esp + 0x94], ecx
jmp 0x208375fe
mov eax, dword [esp + 0x48]
test eax, eax
jne 0x2083768e
test ebx, ebx
je 0x2083768e
mov ebx, dword [ebx]
mov dword [esp + 0x1c], ebx
jmp 0x2083769a
mov dword [esp + 0x1c], 0
mov ebx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x30]
xor esi, esi
mov dword [esp + 0x4c], 0xffffffff
mov ebp, dword [edx + 0x14]
mov edi, dword [ecx + 0x18]
cmp ebp, esi
mov dword [esp + 0x68], esi
mov dword [esp + 0x5c], esi
mov dword [esp + 0x70], esi
mov dword [esp + 0x20], edi
mov dword [esp + 0x50], 0x7fffffff
jne 0x20837736
push esi
push 0x3f
push esi
push esi
push 0xffffffffffffffff
lea eax, [esp + 0xe8]
push edi
push eax
call fcn.20838f90
add esp, 0x1c
test eax, eax
jne 0x20837736
cmp ebx, esi
je 0x2083778c
mov ecx, dword [ebx + 0xc]
mov eax, dword [ecx]
cmp byte [eax], 0x95
jne 0x2083778c
cmp dword [eax + 0x24], edi
jne 0x2083778c
cmp dword [eax + 0x28], 0xffffffff
jne 0x2083778c
mov edx, dword [esp + 0xd8]
push edi
push 1
push edx
push ebx
call fcn.2083a120
add esp, 0x10
test eax, eax
jne 0x2083778c
mov eax, dword [ebx + 0xc]
xor ecx, ecx
mov cl, byte [eax + 8]
mov dword [esp + 0x80], ecx
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
push esi
push 3
push edx
push eax
push 0xffffffffffffffff
lea ecx, [esp + 0xe8]
push edi
push ecx
call fcn.20838f90
add esp, 0x1c
cmp eax, esi
je 0x20837814
mov cl, byte [eax + 0xa]
xor ebx, ebx
test cl, 2
mov dword [esp + 0x5c], 0x100
je 0x208377a4
fld qword [0x2072fd90]
mov esi, 0x400100
mov edi, 1
call fcn.208487ca
mov ecx, eax
jmp 0x20837da5
fld qword [0x2072fd90]
xor esi, esi
xor ebx, ebx
xor edi, edi
call fcn.208487ca
mov ecx, eax
jmp 0x20837da5
mov eax, dword [eax]
mov eax, dword [eax + 0x10]
cmp eax, ebx
je 0x20837808
mov eax, dword [eax]
xor edi, edi
cdq
mov esi, edx
xor edx, edx
mov ecx, eax
cmp esi, edx
mov dword [esp + 0x4c], ecx
mov ebx, 1
mov eax, 0xa
jl 0x208377ed
jg 0x208377d0
cmp ecx, eax
jbe 0x208377ed
push 0
push 0xa
add ebx, 1
push edx
push eax
adc edi, 0
call fcn.208487d0
cmp esi, edx
jg 0x208377d0
jl 0x208377ed
cmp dword [esp + 0x4c], eax
ja 0x208377d0
mov edx, dword [esp + 0x4c]
push esi
push edx
push edi
push ebx
call fcn.208487d0
mov edi, dword [esp + 0x20]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], edx
jmp 0x20837814
mov dword [esp + 0x4c], 0xc8
mov dword [esp + 0x50], ebx
test ebp, ebp
je 0x2083781f
mov eax, dword [ebp + 0xc]
mov ebx, dword [eax]
jmp 0x20837824
mov ebx, 0xf4240
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
xor esi, esi
lea eax, [esp + 0xd4]
push esi
push 0x3c
push ecx
push edx
push 0xffffffffffffffff
push edi
push eax
mov dword [esp + 0xa0], ebx
mov dword [esp + 0x2c], 0x200
call fcn.20838f90
add esp, 0x1c
test eax, eax
je 0x208378e9
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
push esi
push 0x18
push ecx
push edx
push 0xffffffffffffffff
lea eax, [esp + 0xe8]
push edi
push eax
call fcn.20838f90
add esp, 0x1c
test eax, eax
je 0x2083789e
push esi
push 3
push esi
push ebx
mov dword [esp + 0x20], 0x10200
call fcn.20848720
mov ebx, eax
mov esi, edx
mov dword [esp + 0x84], ebx
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
push 0
push 0x24
push ecx
push edx
push 0xffffffffffffffff
lea eax, [esp + 0xe8]
push edi
push eax
call fcn.20838f90
add esp, 0x1c
test eax, eax
je 0x208378f1
mov ecx, dword [esp + 0x10]
push 0
push 3
or ecx, 0x20000
push esi
push ebx
mov dword [esp + 0x20], ecx
call fcn.20848720
mov ebx, eax
mov esi, edx
mov dword [esp + 0x84], ebx
jmp 0x208378f1
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x208379c2
mov ecx, eax
mov edx, dword [ecx + 0xc]
mov eax, dword [edx]
cmp byte [eax], 0x95
jne 0x20837964
cmp dword [eax + 0x24], edi
jne 0x20837964
cmp dword [eax + 0x28], 0xffffffff
jne 0x20837964
mov eax, dword [esp + 0xd8]
mov ecx, dword [esp + 0x1c]
push edi
push 1
push eax
push ecx
call fcn.2083a120
add esp, 0x10
test eax, eax
jne 0x20837964
mov edx, dword [esp + 0x1c]
xor ecx, ecx
mov eax, dword [edx + 0xc]
mov edx, dword [esp + 0x10]
or edx, 0x100200
mov cl, byte [eax + 8]
mov dword [esp + 0x10], edx
mov eax, ecx
test eax, eax
mov dword [esp + 0x80], eax
je 0x208379c2
mov eax, edx
or eax, 0x200000
mov dword [esp + 0x10], eax
jmp 0x208379c2
xor edx, edx
xor ebx, ebx
cmp esi, edx
mov edi, 1
mov eax, 0xa
jl 0x208379a1
jg 0x20837981
cmp dword [esp + 0x84], eax
jbe 0x208379a1
push 0
push 0xa
add edi, 1
push edx
push eax
adc ebx, 0
call fcn.208487d0
cmp esi, edx
jg 0x20837981
jl 0x208379a1
cmp dword [esp + 0x84], eax
ja 0x20837981
mov edx, dword [esp + 0x84]
add edi, 1
adc ebx, 0
push esi
push edx
push ebx
push edi
call fcn.208487d0
mov dword [esp + 0x84], eax
mov esi, edx
mov ebx, eax
cmp esi, dword [esp + 0x50]
jg 0x208379e0
jl 0x208379d0
cmp ebx, dword [esp + 0x4c]
jae 0x208379e0
mov eax, dword [esp + 0x10]
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x50], esi
mov dword [esp + 0x5c], eax
mov ecx, dword [esp + 0x30]
mov dl, byte [ecx + 0x15]
not dl
and edx, 0xff
and edx, 8
shl edx, 4
or edx, 3
mov esi, edx
test ebp, ebp
mov dword [esp + 0x6c], esi
je 0x20837d8f
mov eax, dword [ebp + 4]
xor ebx, ebx
xor edi, edi
cmp eax, ebx
mov dword [esp + 0x8c], 1
mov dword [esp + 0x10], ebx
mov dword [esp + 0x18], ebx
jle 0x20837aba
mov eax, dword [ebp + 8]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
push ebp
mov eax, dword [eax + ebx*4]
push esi
push ecx
push edx
push eax
mov eax, dword [esp + 0x34]
lea ecx, [esp + 0xe8]
push eax
push ecx
call fcn.20838f90
add esp, 0x1c
test eax, eax
je 0x20837ab6
mov edx, dword [esp + 0x10]
mov cl, byte [eax + 0xa]
or dh, 0x10
test cl, 1
mov dword [esp + 0x10], edx
je 0x20837aaa
mov eax, dword [eax]
or dh, 0x40
mov dword [esp + 0x10], edx
mov ecx, dword [eax + 0x38]
test ecx, ecx
je 0x20837a86
mov edx, dword [esp + 0x8c]
push 0
push 0x19
push edi
push edx
jmp 0x20837a9c
mov eax, dword [eax + 0x10]
test eax, eax
je 0x20837aaa
mov eax, dword [eax]
mov ecx, dword [esp + 0x8c]
inc eax
push edi
cdq
push ecx
push edx
push eax
call fcn.208487d0
mov dword [esp + 0x8c], eax
mov edi, edx
mov eax, dword [ebp + 4]
inc ebx
cmp ebx, eax
jl 0x20837a28
mov dword [esp + 0x18], ebx
xor edx, edx
xor ebx, ebx
cmp edi, edx
mov esi, 1
mov eax, 0xa
jl 0x20837af7
jg 0x20837ad7
cmp dword [esp + 0x8c], eax
jbe 0x20837af7
push 0
push 0xa
add esi, 1
push edx
push eax
adc ebx, 0
call fcn.208487d0
cmp edi, edx
jg 0x20837ad7
jl 0x20837af7
cmp dword [esp + 0x8c], eax
ja 0x20837ad7
mov edx, dword [ebp + 0xc]
mov eax, dword [esp + 0x18]
push ebx
push esi
mov ecx, dword [edx + eax*4]
push 0
push ecx
call fcn.208487d0
mov ecx, dword [esp + 0x8c]
push edi
push ecx
push edx
push eax
call fcn.208487d0
mov edi, eax
mov al, byte [ebp + 0x18]
test al, al
mov ebx, edx
je 0x20837b42
mov eax, dword [esp + 0x10]
test ah, 0x40
jne 0x20837b42
mov edx, dword [esp + 0x18]
mov eax, dword [ebp + 4]
cmp edx, eax
jne 0x20837b42
or dword [esp + 0x10], 0x400000
mov eax, dword [esp + 0x18]
mov ecx, dword [ebp + 4]
cmp eax, ecx
jge 0x20837c16
mov ecx, dword [ebp + 8]
mov edx, eax
mov eax, dword [esp + 0x2c]
push ebp
mov esi, dword [ecx + edx*4]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x24]
push 0x3c
push eax
push ecx
push esi
lea eax, [esp + 0xe8]
push edx
push eax
call fcn.20838f90
add esp, 0x1c
test eax, eax
je 0x20837c16
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x20]
or dh, 0x20
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x28]
push ebp
push 0x18
push ecx
push edx
push esi
lea ecx, [esp + 0xe8]
push eax
push ecx
call fcn.20838f90
add esp, 0x1c
test eax, eax
je 0x20837bd3
mov ecx, dword [esp + 0x10]
push 0
push 3
or ecx, 0x10000
push ebx
push edi
mov dword [esp + 0x20], ecx
call fcn.20848720
mov edi, eax
mov ebx, edx
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x20]
push ebp
push 0x24
push edx
push eax
push esi
lea edx, [esp + 0xe8]
push ecx
push edx
call fcn.20838f90
add esp, 0x1c
test eax, eax
je 0x20837c16
mov eax, dword [esp + 0x10]
push 0
push 3
or eax, 0x20000
push ebx
push edi
mov dword [esp + 0x20], eax
call fcn.20848720
mov edi, eax
mov ebx, edx
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 0x10]
test eax, eax
je 0x20837ca1
test esi, 0x4000
jne 0x20837c84
mov edx, dword [esp + 0x18]
lea ecx, [esp + 0x80]
push ecx
mov ecx, dword [esp + 0xdc]
push edx
mov edx, dword [esp + 0x38c]
push eax
mov eax, dword [esp + 0x2c]
push eax
push ebp
push ecx
push edx
call fcn.2083a460
add esp, 0x1c
test eax, eax
je 0x20837c84
test esi, esi
jne 0x20837c63
mov esi, 0x2000
mov eax, dword [esp + 0x80]
or esi, 0x100000
test eax, eax
mov dword [esp + 0x10], esi
je 0x20837ca1
or esi, 0x200000
mov dword [esp + 0x10], esi
jmp 0x20837ca1
push ebx
push edi
call fcn.2083a970
add esp, 8
add eax, 1
adc edx, 0
push ebx
push edi
push edx
push eax
call fcn.208487d0
mov edi, eax
mov ebx, edx
test esi, esi
je 0x20837d80
mov eax, dword [esp + 0x30]
mov esi, dword [eax + 0x28]
mov eax, dword [eax + 0x2c]
cmp eax, 0x80000000
ja 0x20837d52
jb 0x20837cc8
test esi, esi
jae 0x20837d52
mov dword [esp + 0xac], eax
mov eax, dword [ebp + 4]
test eax, eax
jle 0x20837d2d
mov ecx, dword [ebp + 8]
mov dword [esp + 0x9c], eax
mov dword [esp + 0x64], ecx
mov edx, dword [esp + 0x64]
mov ecx, dword [edx]
cmp ecx, 0x3f
jae 0x20837d11
mov eax, 1
xor edx, edx
call fcn.20848920
not eax
and esi, eax
mov eax, dword [esp + 0xac]
not edx
and eax, edx
mov dword [esp + 0xac], eax
mov ecx, dword [esp + 0x64]
mov eax, dword [esp + 0x9c]
add ecx, 4
dec eax
mov dword [esp + 0x64], ecx
mov dword [esp + 0x9c], eax
jne 0x20837ce4
or esi, dword [esp + 0xac]
jne 0x20837d52
mov eax, dword [esp + 0x10]
push 0
push 2
or eax, 0x80000
push ebx
push edi
mov dword [esp + 0x20], eax
call fcn.20848720
mov edi, eax
mov ebx, edx
mov eax, dword [esp + 0x10]
test eax, eax
je 0x20837d80
cmp ebx, dword [esp + 0x50]
jg 0x20837d80
jl 0x20837d68
cmp edi, dword [esp + 0x4c]
jae 0x20837d80
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x68], ebp
mov dword [esp + 0x4c], edi
mov dword [esp + 0x50], ebx
mov dword [esp + 0x70], eax
mov ebp, dword [ebp + 0x20]
mov esi, dword [esp + 0x6c]
test ebp, ebp
jne 0x20837a06
mov eax, dword [esp + 0x5c]
mov ebx, dword [esp + 0x68]
mov edi, dword [esp + 0x70]
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x50]
or esi, eax
xor ebp, ebp
cmp edx, dword [esp + 0xa4]
jg 0x20837dec
jl 0x20837dbb
cmp ecx, dword [esp + 0xa0]
jae 0x20837dec
mov dword [esp + 0xa4], edx
mov edx, dword [esp + 0x24]
mov dword [esp + 0xa0], ecx
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x78], 1
mov dword [esp + 0x54], ebx
mov dword [esp + 0x74], esi
mov dword [esp + 0x3c], edi
mov dword [esp + 0x60], ecx
mov dword [edx + 0x44], ebp
mov eax, dword [esp + 0x40]
test eax, eax
jne 0x20837e1a
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x388]
mov eax, dword [esp + 0x34]
add edx, 0x30
mov dword [esp + 0x30], edx
inc eax
movsx edx, word [ecx]
cmp eax, edx
mov dword [esp + 0x34], eax
jl 0x20837274
mov eax, dword [esp + 0x74]
test eax, 0x100000
je 0x20837e32
mov ecx, dword [esp + 0x390]
mov dword [ecx], 0
mov edx, dword [esp + 0x38]
mov esi, dword [esp + 0x24]
and edx, eax
xor ebp, ebp
mov dword [esi + 4], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x3c]
cmp eax, ebp
mov dword [esi + 0x10], eax
mov dword [esi + 0x38], edx
mov dword [esi + 0x40], ebp
mov dword [esi + 0x3c], ebp
je 0x20837e73
mov eax, dword [esp + 0x384]
mov ecx, dword [eax + 0x44]
mov dword [esi + 0x18], ecx
mov ecx, dword [eax + 0x44]
inc ecx
mov dword [eax + 0x44], ecx
jmp 0x20837e7a
mov dword [esi + 0x18], 0xffffffff
mov edx, dword [esp + 0x27c]
mov edi, dword [esp + 0x60]
xor ecx, ecx
cmp edx, ebp
jle 0x20837eb3
mov ebx, dword [esp + 0x388]
lea eax, [edi + edi*2]
shl eax, 4
mov ebx, dword [eax + ebx + 0x20]
lea eax, [esp + 0x280]
cmp dword [eax], ebx
je 0x20837fdd
inc ecx
add eax, 4
cmp ecx, edx
jl 0x20837ea3
xor eax, eax
xor edx, edx
mov ebp, dword [esp + 0x2c]
mov ecx, dword [esp + 0x28]
not edx
not eax
and ebp, edx
mov edx, dword [esp + 0x388]
and ecx, eax
mov dword [esi], edi
movsx eax, word [edx]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x48]
inc ecx
add esi, 0x4c
cmp ecx, eax
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x48], ecx
mov dword [esp + 0x24], esi
jl 0x20837218
mov eax, dword [esp + 0x38]
and eax, 0x400000
je 0x20837f0f
mov ecx, dword [esp + 0x390]
test ecx, ecx
je 0x20837f0f
mov dword [ecx], 0
test byte [esp + 0x394], 4
je 0x20837f31
test eax, eax
je 0x20837f31
mov eax, dword [esp + 0x58]
mov ecx, dword [eax + 0x24]
mov byte [eax + 4], 1
and ecx, 0xfff7ffff
mov dword [eax + 0x24], ecx
mov ebx, dword [esp + 0x384]
push 0xffffffffffffffff
push ebx
call fcn.207f46b0
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x390]
add esp, 8
add eax, 0x20
cmp word [ecx], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x24], eax
jle 0x208380f6
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x388]
mov edx, dword [eax + 0x18]
mov eax, dword [eax]
mov dword [esp + 0x40], edx
lea eax, [eax + eax*2]
shl eax, 4
mov esi, dword [eax + ecx + 0x14]
lea edi, [eax + ecx + 8]
mov eax, dword [ebx]
mov edx, dword [esi + 0x4c]
push edx
push eax
call fcn.207fd510
mov ebp, eax
mov al, byte [esi + 0x35]
add esp, 8
test al, al
jne 0x208380d0
mov eax, dword [esi + 0x1c]
test eax, eax
jne 0x208380d0
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0x44]
test ecx, ecx
je 0x20837fee
mov ecx, dword [esi + 0x40]
mov edx, dword [edi + 0x18]
mov eax, dword [esp + 0x14]
push 0xfffffffffffffff6
push ecx
push 0
push 0
push edx
push 0x20
push eax
call fcn.207e8430
add esp, 0x1c
jmp 0x2083807d
mov eax, 1
xor edx, edx
call fcn.20848920
jmp 0x20837eb7
test dword [eax + 4], 0x80000
jne 0x20838069
mov ecx, dword [esp + 0x58]
mov eax, dword [edi + 0x18]
mov dl, byte [ecx + 4]
neg dl
sbb edx, edx
and edx, 0xfffffffc
add edx, 0xd
push edx
push esi
push ebp
push eax
push ebx
call fcn.20827530
mov ecx, dword [esp + 0x6c]
add esp, 0x14
mov al, byte [ecx + 4]
test al, al
jne 0x2083807d
cmp dword [esi + 8], 0x40
jae 0x2083807d
mov eax, dword [edi + 0x28]
mov edx, dword [edi + 0x2c]
mov ecx, eax
xor esi, esi
or ecx, edx
je 0x20838048
mov ecx, 1
call fcn.20848810
mov ecx, eax
inc esi
or ecx, edx
jne 0x20838037
mov edx, dword [esp + 0x14]
push esi
push edx
call fcn.207e8550
add esp, 4
sub eax, 2
push eax
mov eax, dword [esp + 0x1c]
push eax
call fcn.207e8690
add esp, 0xc
jmp 0x2083807d
mov ecx, dword [esi + 4]
mov edx, dword [esi + 0x18]
push ecx
push 0
push edx
push ebp
push ebx
call fcn.207eff10
add esp, 0x14
mov eax, dword [esp + 0x24]
mov ecx, dword [edi + 0x18]
mov esi, dword [eax + 0x10]
mov dword [eax + 0x14], ecx
test esi, esi
je 0x208380c6
push esi
push ebx
call fcn.207f4d70
mov edx, dword [esi + 4]
mov edi, eax
mov eax, dword [esp + 0x1c]
inc edx
push edx
push 0
push 0x65
push eax
call fcn.207e83a0
mov ecx, dword [esi + 0x14]
mov edx, dword [esp + 0x58]
mov eax, dword [esp + 0x2c]
push 0xfffffffffffffff0
push edi
push ebp
push ecx
push edx
push 0xd
push eax
call fcn.207e8430
add esp, 0x34
push ebp
push ebx
call fcn.207f46b0
add esp, 8
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x388]
mov eax, dword [esp + 0x48]
add edx, 0x4c
mov dword [esp + 0x24], edx
inc eax
movsx edx, word [ecx]
cmp eax, edx
mov dword [esp + 0x48], eax
jl 0x20837f67
mov eax, dword [esp + 0x14]
push eax
call fcn.207e8550
mov esi, dword [esp + 0x5c]
mov ecx, dword [esp + 0x38c]
add esp, 4
mov dword [esp + 0x48], 0
mov dword [esi + 0xc], eax
or eax, 0xffffffff
add esi, 0x20
cmp word [ecx], 0
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
jle 0x20838df6
mov eax, dword [esi]
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x388]
shl edx, 4
mov ecx, dword [edx + eax + 0x20]
lea ebp, [edx + eax + 8]
mov eax, dword [esi + 0x18]
mov edx, dword [esi + 0x10]
mov dword [esp + 0x44], eax
mov eax, dword [esi + 4]
mov edi, eax
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x1c], edx
shr eax, 0x13
shr edi, 0x15
and eax, 1
push ecx
and edi, 1
mov dword [esp + 0x70], eax
call fcn.207e84e0
mov edx, dword [esp + 0x18]
mov dword [esp + 0x24], eax
push edx
mov dword [esi + 0x20], eax
mov dword [esi + 0x1c], eax
call fcn.207e84e0
mov dword [esi + 0x24], eax
mov dword [esp + 0x84], eax
mov eax, dword [esi]
add esp, 8
test eax, eax
jle 0x208381c4
test byte [ebp + 0x15], 8
je 0x208381c4
mov edx, dword [ebx + 0x48]
inc edx
mov eax, edx
mov dword [ebx + 0x48], edx
mov dword [esi + 0xc], eax
push eax
mov eax, dword [esp + 0x18]
push 0
push 0x30
push eax
call fcn.207e83a0
add esp, 0x10
mov ebp, dword [esi + 0x44]
test ebp, ebp
je 0x208383a7
mov edi, dword [ebp]
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp + 4]
mov dword [esp + 0x54], ecx
lea eax, [edi + 2]
mov dword [esp + 0x3c], edx
push eax
push ebx
call fcn.20824ec0
mov ecx, dword [ebx + 0x54]
add esp, 8
inc ecx
cmp edi, 1
mov dword [esp + 0x18], eax
mov dword [ebx + 0x54], ecx
mov dword [esp + 0x1c], 1
jl 0x20838278
mov edx, dword [esp + 0x1c]
xor eax, eax
test edi, edi
mov dword [esp + 0x34], eax
jle 0x2083826b
mov ecx, dword [esp + 0x54]
cmp dword [ecx], edx
je 0x20838229
inc eax
add ecx, 8
cmp eax, edi
jl 0x20838217
mov dword [esp + 0x34], eax
jmp 0x2083826b
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x1c]
lea edx, [eax + ecx + 1]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x3c]
push edx
lea eax, [eax + eax*2]
mov eax, dword [ecx + eax*4 + 8]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0xe8]
mov ecx, dword [eax + edx*8]
mov edx, dword [ecx + 0xc]
push edx
push ebx
call fcn.20823330
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x28]
add esp, 0xc
cmp eax, edi
je 0x20838278
inc edx
cmp edx, edi
mov dword [esp + 0x1c], edx
jle 0x20838209
mov edx, dword [ebx + 0x54]
mov eax, dword [esp + 0x18]
dec edx
push eax
mov dword [ebx + 0x54], edx
mov ecx, dword [ebp + 0x14]
mov edx, dword [esp + 0x18]
push ecx
push 0x30
push edx
call fcn.207e83a0
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x24]
inc eax
dec ecx
push eax
push ecx
push 0x30
push edx
call fcn.207e83a0
mov eax, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x18]
neg eax
mov edx, dword [esp + 0x38]
sbb eax, eax
and al, 0xf7
add eax, 0xfffffffe
push eax
mov eax, dword [esp + 0x44]
push ecx
mov ecx, dword [esp + 0x38]
push edx
mov edx, dword [esp + 0x40]
push eax
push ecx
push 0x67
push edx
call fcn.207e8430
lea eax, [edi + 2]
push eax
mov eax, dword [esp + 0x58]
push eax
push ebx
call fcn.20824f30
add esp, 0x48
mov dword [ebp + 0x1c], 0
test edi, edi
jle 0x20838387
mov edx, dword [esp + 0x54]
mov ecx, dword [esp + 0x3c]
add edx, 4
lea ebp, [ecx + 8]
mov dword [esp + 0x38], edx
mov eax, dword [esp + 0x38]
cmp byte [eax], 0
je 0x20838376
mov eax, dword [ebp]
mov edx, dword [esp + 0xe4]
lea ecx, [eax + eax*4]
lea eax, [edx + ecx*8]
test eax, eax
je 0x20838376
mov cl, byte [eax + 0xc]
test cl, 4
jne 0x20838376
mov edx, dword [esi + 0xc]
test edx, edx
je 0x20838344
mov edx, dword [eax]
mov dl, byte [edx + 2]
and dl, 1
cmp dl, 1
jne 0x20838376
or cl, 4
mov byte [eax + 0xc], cl
mov cx, word [eax + 4]
test cx, cx
jl 0x20838376
mov edx, dword [eax + 0x10]
movsx ecx, cx
mov eax, dword [edx + 0x10]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*8]
mov cl, byte [eax + 0xd]
dec cl
mov byte [eax + 0xd], cl
jne 0x20838376
push eax
push esi
call fcn.2083a9c0
add esp, 8
mov edx, dword [esp + 0x38]
add ebp, 0xc
add edx, 8
dec edi
mov dword [esp + 0x38], edx
jne 0x2083830b
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push edx
mov dword [esi + 0x2c], 1
mov dword [esi + 0x30], ecx
call fcn.207e8550
add esp, 4
jmp 0x20838c8f
mov eax, dword [esi + 4]
test ah, 1
je 0x20838410
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x10]
push 0
push 3
push eax
push ecx
push 0xffffffffffffffff
lea eax, [esp + 0xe8]
push edx
push eax
call fcn.20838f90
push 0
push esi
push eax
push ebx
call fcn.2083aa20
mov ebp, dword [esi + 0x20]
mov ecx, dword [esp + 0x40]
mov edi, eax
push ebp
push edi
push 0x26
push ecx
call fcn.207e83a0
mov edx, dword [esp + 0x4c]
mov eax, dword [esp + 0x50]
push edi
push ebp
push edx
push 0x2e
push eax
call fcn.207e81f0
add esp, 0x50
mov dword [esi + 0x2c], 0x18
jmp 0x20838c92
test ah, 2
je 0x2083869b
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x10]
push 0
push 0x24
push ecx
push edx
push 0xffffffffffffffff
lea ecx, [esp + 0xe8]
push eax
push ecx
mov ebp, 0x18
call fcn.20838f90
mov edx, dword [esp + 0x48]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x44]
push 0
push ebp
push edx
push eax
push 0xffffffffffffffff
lea edx, [esp + 0x104]
push ecx
push edx
call fcn.20838f90
add esp, 0x38
mov dword [esp + 0x18], eax
test edi, edi
je 0x20838480
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x20838565
mov edx, eax
lea ecx, [esp + 0x70]
push ecx
mov eax, dword [edx]
mov dword [esp + 0x44], eax
mov edx, dword [eax + 0xc]
push edx
push ebx
call fcn.20823250
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x4c]
add esp, 0xc
mov al, byte [eax]
cmp al, 0x46
je 0x208384bc
cmp al, 0x45
je 0x208384bc
xor eax, eax
jmp 0x208384c1
mov eax, 1
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x3c]
push eax
mov eax, dword [esp + 0x18]
push ecx
push edx
push 0x6f
push eax
call fcn.207e81f0
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x34]
push ecx
mov eax, dword [esp + 0x28]
mov ecx, edi
push edx
mov edx, dword [esp + 0x30]
push eax
neg ecx
sbb ecx, ecx
and ecx, 0xffffffea
add ecx, 0x78
push ecx
push edx
call fcn.207e81f0
mov eax, dword [esp + 0x98]
push eax
push ebx
call fcn.20824e30
mov ecx, dword [esp + 0x4c]
add esp, 0x30
test byte [ecx + 0xc], 4
jne 0x20838589
mov eax, dword [esi + 0xc]
test eax, eax
mov eax, ecx
je 0x2083852f
mov edx, dword [eax]
mov cl, byte [edx + 2]
and cl, 1
cmp cl, 1
jne 0x20838589
mov dl, byte [eax + 0xc]
or dl, 4
cmp word [eax + 4], 0
mov byte [eax + 0xc], dl
jl 0x20838589
mov edx, dword [eax + 0x10]
movsx eax, word [eax + 4]
mov ecx, dword [edx + 0x10]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*8]
mov cl, byte [eax + 0xd]
dec cl
mov byte [eax + 0xd], cl
jne 0x20838589
push eax
push esi
call fcn.2083a9c0
add esp, 8
jmp 0x20838589
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x10]
mov ecx, edi
push edx
mov edx, dword [esp + 0x18]
push eax
neg ecx
sbb ecx, ecx
and ecx, 0xffffffbd
add ecx, 0x77
push ecx
push edx
call fcn.207e83a0
add esp, 0x10
mov eax, dword [esp + 0x18]
test eax, eax
je 0x20838628
mov edx, dword [ebx + 0x48]
mov ebp, dword [eax]
inc edx
mov eax, edx
mov dword [ebx + 0x48], edx
mov dword [esi + 8], eax
mov ecx, dword [ebp + 0xc]
push eax
push ecx
push ebx
call fcn.20823330
mov al, byte [ebp]
add esp, 0xc
cmp al, 0x47
je 0x208385ca
cmp al, 0x45
je 0x208385ca
mov ebp, edi
neg ebp
sbb ebp, ebp
and ebp, 2
add ebp, 0x45
jmp 0x208385d6
mov ebp, edi
neg ebp
sbb ebp, ebp
and ebp, 0xfffffffe
add ebp, 0x48
mov eax, dword [esp + 0x18]
test byte [eax + 0xc], 4
jne 0x20838628
mov ecx, dword [esi + 0xc]
test ecx, ecx
je 0x208385f4
mov edx, dword [eax]
mov cl, byte [edx + 2]
and cl, 1
cmp cl, 1
jne 0x20838628
mov dl, byte [eax + 0xc]
or dl, 4
cmp word [eax + 4], 0
mov byte [eax + 0xc], dl
jl 0x20838628
mov edx, dword [eax + 0x10]
movsx eax, word [eax + 4]
mov ecx, dword [edx + 0x10]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*8]
mov cl, byte [eax + 0xd]
dec cl
mov byte [eax + 0xd], cl
jne 0x20838628
push eax
push esi
call fcn.2083a9c0
add esp, 8
mov edx, dword [esp + 0x14]
push edx
call fcn.207e8550
mov ecx, dword [esp + 0x14]
add esp, 4
neg edi
sbb edi, edi
mov dword [esi + 0x30], ecx
and edi, 0xffffffc7
mov dword [esi + 0x34], eax
add edi, 0x6a
cmp ebp, 0x18
mov dword [esi + 0x2c], edi
je 0x20838c92
push ebx
call fcn.20824e00
mov edx, dword [esp + 0x14]
mov edi, eax
mov eax, dword [esp + 0x18]
push edi
push edx
push 0x28
push eax
call fcn.207e83a0
mov ecx, dword [esp + 0x34]
mov edx, dword [esi + 8]
push edi
push ecx
push edx
push ebp
mov ebp, dword [esp + 0x38]
push ebp
call fcn.207e81f0
push 0x6b
push ebp
call fcn.207e86c0
push edi
push ebx
call fcn.20824e30
add esp, 0x38
jmp 0x20838c92
test ah, 0x30
je 0x20838c6b
mov eax, dword [esp + 0x1c]
mov ebp, dword [esi + 0x38]
xor ecx, ecx
mov dword [esp + 0xbc], 0x77
mov edx, dword [eax + 8]
mov dword [esp + 0xb4], ecx
mov dword [esp + 0xb8], ecx
mov dword [esp + 0xc0], 0x34
mov eax, dword [edx + ebp*4]
mov edx, dword [ebx + 0xc]
mov dword [esp + 0x74], eax
mov eax, dword [esi + 0x10]
mov dword [esp + 0x40], eax
mov eax, dword [ebx + 0x48]
inc eax
mov dword [esp + 0x54], edx
mov edx, dword [esi + 0x14]
mov dword [esi + 8], eax
mov eax, dword [ebx + 0x48]
mov dword [esp + 0x68], edx
test ebp, ebp
lea edx, [eax + 2]
lea eax, [eax + ebp + 4]
mov dword [esp + 0xc4], 6
mov dword [esp + 0xc8], 0x62
mov dword [esp + 0xcc], 0x78
mov dword [esp + 0xd0], 0x54
mov dword [esp + 0xa8], 0x18
mov dword [esp + 0xac], 0x3f
mov dword [esp + 0xb0], 0x29
mov dword [esp + 0x78], ecx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x30], edx
mov dword [ebx + 0x48], eax
mov dword [esp + 0x38], ecx
jle 0x20838818
mov dword [esp + 0x24], edx
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x38]
push ecx
mov edx, dword [ecx + 8]
mov cx, word [esi + 4]
push ecx
mov ecx, dword [esp + 0x30]
mov eax, dword [edx + eax*4]
mov edx, dword [esp + 0x34]
push edx
mov edx, dword [esp + 0x74]
push ecx
push eax
lea eax, [esp + 0xe8]
push edx
push eax
call fcn.20838f90
add esp, 0x1c
mov dword [esp + 0x3c], eax
test eax, eax
je 0x20838814
mov ecx, dword [esp + 0x24]
mov edx, eax
push ecx
push esi
push edx
push ebx
call fcn.2083aa20
mov ecx, dword [esp + 0x34]
add esp, 0x10
cmp eax, ecx
je 0x208387d8
mov edx, dword [esp + 0x54]
push ecx
push eax
push 8
push edx
call fcn.207e83a0
add esp, 0x10
mov eax, dword [esp + 0x3c]
test byte [eax + 0xa], 0x81
jne 0x208387fa
mov ecx, dword [esi + 0x1c]
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x54]
push ecx
push edx
push 0x41
push eax
call fcn.207e83a0
add esp, 0x10
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x24]
inc eax
inc edx
cmp eax, ebp
mov dword [esp + 0x38], eax
mov dword [esp + 0x24], edx
jl 0x20838771
mov ecx, dword [esp + 0x20]
mov al, byte [esp + 0x394]
mov edx, dword [esi + 0x20]
test al, 1
mov dword [esp + 0x34], edx
je 0x20838844
test dword [esi + 4], 0x100000
je 0x20838844
mov eax, dword [esp + 0x1c]
cmp dword [eax + 4], ebp
jle 0x20838844
mov dword [esp + 0x78], 1
test dword [esi + 4], 0x10000
je 0x20838880
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
push ecx
mov ecx, dword [esp + 0x78]
push 0x18
push edx
mov edx, dword [esp + 0x1c]
push eax
push ecx
lea eax, [esp + 0xe8]
push edx
push eax
call fcn.20838f90
mov ecx, dword [esp + 0x3c]
add esp, 0x1c
mov dword [esp + 0x18], eax
test dword [esi + 4], 0x20000
je 0x208388ba
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
push ecx
mov ecx, dword [esp + 0x78]
push 0x24
push edx
mov edx, dword [esp + 0x1c]
push eax
push ecx
lea eax, [esp + 0xe8]
push edx
push eax
call fcn.20838f90
add esp, 0x1c
mov dword [esp + 0x20], eax
mov ecx, eax
mov edx, dword [esp + 0x1c]
mov eax, dword [edx + 0x28]
xor edx, edx
cmp byte [eax + ebp], dl
sete dl
cmp edi, edx
jne 0x208388df
mov eax, dword [esp + 0x18]
mov edx, ecx
mov ecx, eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ecx
jmp 0x208388e3
mov edx, dword [esp + 0x18]
xor eax, eax
cmp ecx, eax
je 0x208388f3
test byte [ecx + 0xa], 0x28
mov dword [esp + 0x38], eax
je 0x208388fb
mov dword [esp + 0x38], 1
cmp edx, eax
je 0x20838909
test byte [edx + 0xa], 0x28
mov dword [esp + 0x3c], eax
je 0x20838911
mov dword [esp + 0x3c], 1
cmp ecx, eax
jne 0x2083891d
cmp ebp, eax
mov dword [esp + 0x60], eax
jle 0x20838925
mov dword [esp + 0x60], 1
test ecx, ecx
mov dword [esp + 0x24], ebp
je 0x2083897e
mov eax, dword [ebx + 0x54]
test edx, edx
mov dword [esp + 0x40], eax
je 0x2083893c
inc eax
mov dword [ebx + 0x54], eax
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x30]
add eax, ebp
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 0xc]
push eax
push ebx
call fcn.20823330
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x40]
add eax, ebp
mov dword [ebx + 0x54], ecx
mov ecx, dword [esp + 0x20]
push edx
push eax
push 0x41
push ecx
call fcn.207e83a0
lea edx, [ebp + 1]
add esp, 0x1c
mov dword [esp + 0x24], edx
jmp 0x208389b5
mov eax, dword [esp + 0x78]
test eax, eax
je 0x208389b5
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x14]
add eax, ebp
push eax
push 0
push 0x74
push ecx
call fcn.207e83a0
lea edx, [ebp + 1]
add esp, 0x10
mov dword [esp + 0x24], edx
mov dword [esp + 0x38], 0
mov dword [esp + 0x60], 1
mov eax, dword [esp + 0x24]
test eax, eax
jle 0x208389f8
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x30]
mov eax, dword [ebx + 0xc]
push ecx
push edx
push 2
push eax
mov dword [esp + 0x50], eax
call fcn.207e83a0
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x50]
push eax
push ecx
call fcn.2083dd50
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x48]
push edx
push eax
push ebx
call fcn.208217f0
add esp, 0x24
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
push 0xfffffffffffffff2
push ecx
mov ecx, dword [esp + 0x4c]
push edx
mov edx, dword [esp + 0x44]
push eax
mov eax, dword [esp + 0x70]
push ecx
lea ecx, [edx + eax*2]
lea edx, [edi + ecx*2]
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + edx*4 + 0xc8]
push eax
push ecx
call fcn.207e8430
mov eax, dword [esp + 0x34]
add esp, 0x1c
test eax, eax
mov dword [esp + 0x24], ebp
je 0x20838ab8
mov edx, dword [esp + 0x30]
lea eax, [edx + ebp]
push eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax]
mov edx, dword [ecx + 0xc]
push edx
push ebx
call fcn.20823330
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x20]
push eax
lea eax, [ecx + ebp]
push eax
push 0x41
push edx
call fcn.207e83a0
lea eax, [ebp + 1]
add esp, 0x1c
test eax, eax
jle 0x20838ab1
mov eax, dword [ebx + 0xc]
lea ecx, [ebp + 1]
push ecx
mov ecx, dword [esp + 0x34]
push ecx
push 2
push eax
mov dword [esp + 0x50], eax
call fcn.207e83a0
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x50]
push edx
push eax
call fcn.2083dd50
mov ecx, dword [esp + 0x48]
lea eax, [ebp + 1]
push eax
push ecx
push ebx
call fcn.208217f0
add esp, 0x24
lea eax, [ebp + 1]
mov dword [esp + 0x24], eax
mov edx, dword [esp + 0x14]
push edx
call fcn.207e8550
mov dword [esi + 0x34], eax
mov eax, dword [esp + 0x1c]
add esp, 4
test eax, eax
jne 0x20838ad8
test ebp, ebp
jne 0x20838ad8
xor eax, eax
jmp 0x20838add
mov eax, 1
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x30]
push 0xfffffffffffffff2
push ecx
mov ecx, dword [esp + 0x3c]
push edx
push ecx
lea ecx, [edi + 1]
imul ecx, eax
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x24]
push edx
mov edx, dword [esp + ecx*4 + 0xbc]
push edx
push eax
call fcn.207e8430
mov eax, dword [esp + 0x58]
mov edx, dword [esp + 0x30]
cmp eax, edi
setne cl
push ecx
push edx
call fcn.207e86c0
push ebx
call fcn.20824e00
mov dword [esp + 0x5c], eax
mov eax, dword [esi + 4]
add esp, 0x28
test eax, 0x30000
je 0x20838b69
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x14]
push eax
push ebp
push ecx
push 3
push edx
call fcn.207e81f0
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x28]
push eax
push ecx
push 0x41
push edx
call fcn.207e83a0
add esp, 0x24
mov eax, dword [esp + 0x6c]
mov ebp, dword [esp + 0x34]
test eax, eax
jne 0x20838b9e
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x14]
push ebp
push eax
push 0x36
push ecx
call fcn.207e83a0
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
push ebp
push 0
push edx
push 0x78
push eax
call fcn.207e81f0
add esp, 0x24
push ebp
push ebx
call fcn.20824e30
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x4c]
add esp, 8
mov dword [esi + 0x30], ecx
neg edi
sbb edi, edi
and edi, 0xffffffc7
add edi, 0x6a
test eax, eax
mov dword [esi + 0x2c], edi
je 0x20838c13
test byte [eax + 0xc], 4
jne 0x20838c13
mov ecx, dword [esi + 0xc]
test ecx, ecx
je 0x20838bde
mov edx, dword [eax]
mov cl, byte [edx + 2]
and cl, 1
cmp cl, 1
jne 0x20838c13
mov dl, byte [eax + 0xc]
or dl, 4
cmp word [eax + 4], 0
mov byte [eax + 0xc], dl
jl 0x20838c13
movsx ecx, word [eax + 4]
mov eax, dword [eax + 0x10]
lea edx, [ecx + ecx*4]
mov ecx, dword [eax + 0x10]
lea eax, [ecx + edx*8]
mov cl, byte [ecx + edx*8 + 0xd]
dec cl
mov byte [eax + 0xd], cl
jne 0x20838c13
push eax
push esi
call fcn.2083a9c0
add esp, 8
mov eax, dword [esp + 0x18]
test eax, eax
je 0x20838c92
test byte [eax + 0xc], 4
jne 0x20838c92
mov ecx, dword [esi + 0xc]
test ecx, ecx
je 0x20838c35
mov edx, dword [eax]
mov cl, byte [edx + 2]
and cl, 1
cmp cl, 1
jne 0x20838c92
mov dl, byte [eax + 0xc]
or dl, 4
cmp word [eax + 4], 0
mov byte [eax + 0xc], dl
jl 0x20838c92
mov edx, dword [eax + 0x10]
movsx eax, word [eax + 4]
mov ecx, dword [edx + 0x10]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*8]
mov cl, byte [eax + 0xd]
dec cl
mov byte [eax + 0xd], cl
jne 0x20838c92
push eax
push esi
call fcn.2083a9c0
add esp, 8
jmp 0x20838c92
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x10]
push edx
mov dword [esi + 0x30], eax
push eax
mov eax, dword [esp + 0x1c]
push 0x77
push eax
mov dword [esi + 0x2c], 0x6a
call fcn.207e83a0
add esp, 0x10
inc eax
mov dword [esi + 0x34], eax
mov edx, dword [esp + 0x27c]
xor ecx, ecx
test edx, edx
jle 0x20838cba
mov edi, dword [esp + 0x10]
lea eax, [esp + 0x280]
cmp dword [eax], edi
je 0x20838e63
inc ecx
add eax, 4
cmp ecx, edx
jl 0x20838caa
xor eax, eax
xor edx, edx
mov ebp, dword [esp + 0x28]
mov edi, dword [esp + 0x2c]
not eax
not edx
and ebp, eax
mov eax, dword [esp + 0xdc]
and edi, edx
mov dword [esp + 0x28], ebp
test eax, eax
mov dword [esp + 0x2c], edi
jle 0x20838d40
mov ecx, dword [esp + 0xe4]
mov dword [esp + 0x3c], eax
lea edi, [ecx + 0xc]
test byte [edi], 6
jne 0x20838d32
mov eax, dword [edi + 0x14]
mov ecx, dword [edi + 0x18]
mov edx, dword [esp + 0x2c]
and eax, ebp
and ecx, edx
or eax, ecx
jne 0x20838d32
mov ecx, dword [esi + 0xc]
mov eax, dword [edi - 0xc]
test ecx, ecx
je 0x20838d1b
mov dl, byte [eax + 2]
and dl, 1
cmp dl, 1
jne 0x20838d32
mov ecx, dword [esp + 0x7c]
push 8
push ecx
push eax
push ebx
call fcn.20823ea0
mov al, byte [edi]
add esp, 0x10
or al, 4
mov byte [edi], al
mov eax, dword [esp + 0x3c]
add edi, 0x28
dec eax
mov dword [esp + 0x3c], eax
jne 0x20838cef
mov eax, dword [esi + 0xc]
test eax, eax
je 0x20838dd8
mov edi, dword [esp + 0x14]
push edi
call fcn.207e8550
mov edx, dword [esi + 0xc]
mov dword [esi + 0x28], eax
push edx
push 1
push 0x30
push edi
call fcn.207e83a0
mov eax, dword [esi + 0x14]
push eax
push ebx
call fcn.20821780
mov ecx, dword [esi + 0x18]
push ecx
push ebx
call fcn.20821780
mov eax, dword [esp + 0x100]
add esp, 0x24
xor ebp, ebp
test eax, eax
jle 0x20838dd8
mov edx, dword [esp + 0xe4]
lea edi, [edx + 0xc]
test byte [edi], 6
jne 0x20838dc9
mov eax, dword [edi + 0x14]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
and eax, ecx
mov ecx, dword [edi + 0x18]
and ecx, edx
or eax, ecx
jne 0x20838dc9
mov eax, dword [esp + 0x7c]
mov ecx, dword [edi - 0xc]
push 8
push eax
push ecx
push ebx
call fcn.20823ea0
mov al, byte [edi]
add esp, 0x10
or al, 4
mov byte [edi], al
mov eax, dword [esp + 0xdc]
inc ebp
add edi, 0x28
cmp ebp, eax
jl 0x20838d94
mov edx, dword [esp + 0x388]
mov eax, dword [esp + 0x48]
inc eax
add esi, 0x4c
movsx ecx, word [edx]
cmp eax, ecx
mov dword [esp + 0x48], eax
jl 0x20838131
mov ebp, dword [esp + 0x58]
mov edx, dword [esp + 0x7c]
mov dword [ebp + 0x10], edx
mov eax, dword [esp + 0xd4]
mov ecx, dword [esp + 0xdc]
mov esi, dword [esp + 0xe4]
mov edi, dword [eax]
lea eax, [ecx - 1]
test eax, eax
jl 0x20838e41
lea ebx, [eax + 1]
test byte [esi + 0xc], 1
je 0x20838e34
mov edx, dword [esi]
push edx
push edi
call fcn.2081eea0
add esp, 8
add esi, 0x28
dec ebx
jne 0x20838e22
mov esi, dword [esp + 0xe4]
lea eax, [esp + 0xec]
cmp esi, eax
je 0x20838e56
push esi
push edi
call fcn.207e0aa0
add esp, 8
pop edi
mov eax, ebp
pop esi
pop ebp
pop ebx
add esp, 0x370
ret
mov eax, 1
xor edx, edx
call fcn.20848920
jmp 0x20838cbe