Function at 0x583a20
Capabilities:
Inspect section memory permissions
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xe8
mov esi, esp
mov dword [esi + 0xd0], ebp
mov dword [esi + 0xd4], esp
mov dword [esi + 0xe0], 0xffffffff
mov dword [esi + 0xdc], 0x5790a0
mov edi, edx
lea eax, [esi + 0xd8]
mov dword [esi + 0x3c], ecx
mov edx, dword fs:[0]
mov dword [esi + 0x84], edi
and edi, 0x7ffffff
mov dword [esi + 0x9c], edi
mov dword [esi + 0xd8], edx
mov dword fs:[0], eax
mov ebx, dword [ecx + 4]
mov edx, dword [ecx]
mov eax, dword [ebx + 0x94]
movzx ecx, byte [edx + 0x284]
mov dword [esi + 0x80], eax
mov eax, dword [ebx + 0xa4]
shr edi, cl
call 0x583aa6
pop ecx
cmp edi, dword [esi + 0x80]
mov dword [esi + 0x8c], ecx
mov dword [esi + 0x98], edi
mov dword [esi + 0x7c], eax
mov eax, dword [ebx + 0xa8]
mov dword [esi + 0x5c], eax
mov eax, dword [ebx + 0xac]
mov dword [ebx + 0xa4], 0
mov dword [ebx + 0xa8], 1
mov dword [ebx + 0xac], 0
mov dword [esi + 0xa4], eax
jae 0x584bcd
movzx eax, byte [edx + 0x58]
mov ecx, dword [edx + 0x280]
mov byte [esi + 0x88], al
mov eax, dword [ebx + 0x90]
mov dword [esi + 0xc], ecx
mov ecx, edi
mov edi, dword [eax + edi*8]
mov eax, dword [eax + ecx*8 + 4]
mov dword [ebx + 0x48], 0
mov dword [ebx + 0x64], 0
test eax, eax
mov dword [esi + 0x30], edi
mov edi, ecx
je 0x584bf1
mov dword [esi + 0x28], eax
mov eax, dword [esi + 0xc]
mov dword [esi + 0xa0], edx
mov ecx, 9
movzx eax, byte [eax + 0x164]
mov byte [esi + 0x38], al
mov eax, dword [esi + 0x30]
lea edx, [eax + 8]
test byte [edx], 2
je 0x583b82
cmp dword [esi + 0x28], 0xc
jbe 0x584eb8
mov eax, dword [eax + 0x11]
test eax, eax
je 0x583b82
cmp eax, 0x40000000
jae 0x585037
shl eax, 2
add eax, 0xd
mov ecx, eax
jb 0x585054
mov eax, dword [esi + 0x28]
cmp eax, ecx
jb 0x584da4
sub eax, ecx
mov dword [esi + 0x1c], ebx
mov dword [esi + 0x90], edx
mov dword [esi + 4], eax
je 0x583cb2
mov eax, dword [ebx + 0x44]
add ecx, edx
xor edx, edx
mov dword [esi + 0x2c], ecx
mov dword [esi + 0x10], eax
mov eax, dword [ebx + 0x40]
mov dword [esi + 0x14], eax
mov eax, dword [ebx + 0x34]
mov dword [esi + 0x34], eax
mov eax, dword [ebx + 0x38]
mov dword [esi + 0x20], eax
xor eax, eax
jmp 0x583be3
mov ecx, dword [esi + 4]
add dword [esi + 0x2c], edi
sub ecx, edi
test ecx, ecx
mov dword [esi + 4], ecx
je 0x583cb4
mov dword [esi + 8], eax
xor eax, eax
xor ecx, ecx
xor edi, edi
mov dword [esi + 0x24], edx
nop
mov edx, dword [esi + 0x2c]
movzx ebx, byte [edx + edi]
movzx edx, bl
test bl, bl
jns 0x583c20
and edx, 0x7f
inc edi
shl edx, cl
add ecx, 7
or eax, edx
cmp dword [esi + 4], edi
jne 0x583bf0
xor edx, edx
xor edi, edi
jmp 0x583c2e
inc edi
shl edx, cl
cmp edi, dword [esi + 4]
ja 0x584d36
or edx, eax
mov ecx, dword [esi + 0x24]
mov eax, edx
and edx, 1
shr eax, 1
neg edx
xor edx, eax
add ecx, edx
cmp dword [esi + 0x10], ecx
mov edx, ecx
mov dword [esi + 0x94], ecx
jbe 0x584b02
mov eax, dword [esi + 0x14]
mov ecx, dword [eax + edx*4]
mov eax, dword [esi + 8]
cmp ecx, eax
jae 0x583c78
cmp ecx, dword [esi + 0x20]
jae 0x584b66
mov ebx, edx
mov edx, dword [esi + 0x34]
cmp dword [edx + ecx*4], ebx
mov edx, ebx
mov ebx, dword [esi + 0x1c]
je 0x583bd0
cmp eax, dword [esi + 0x20]
mov dword [esi + 0xa8], eax
jae 0x584cbb
mov ecx, dword [esi + 0x34]
mov dword [ecx + eax*4], edx
mov ecx, dword [esi + 0x94]
cmp ecx, dword [esi + 0x10]
jae 0x584b43
mov ebx, edx
mov edx, dword [esi + 0x14]
mov dword [edx + ecx*4], eax
mov edx, ebx
mov ebx, dword [esi + 0x1c]
inc eax
mov dword [ebx + 0x48], eax
jmp 0x583bd0
xor eax, eax
mov edx, dword [esi + 0x28]
cmp edx, 5
jb 0x584dc6
mov edi, dword [esi + 0xc]
add edx, 0xfffffffb
mov dword [esi + 8], eax
cmp edx, 3
jbe 0x584deb
mov ecx, dword [ebp + 8]
lea eax, [ebx + 0x98]
mov dword [esi + 0x24], eax
mov eax, ecx
shr eax, 8
mov dword [esi + 0x14], eax
mov eax, dword [esi + 0x30]
mov edx, dword [eax + 0xd]
test edx, edx
mov dword [esi + 4], edx
lea edx, [ebx + 0x4c]
mov dword [esi + 0x2c], edx
je 0x583eaf
mov eax, dword [eax + 9]
test cl, 1
jne 0x583d27
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 0x90]
cmp dl, 0xa
je 0x583d34
movzx edx, dl
mov edi, eax
cmp edx, 0xd
mov edx, ecx
jne 0x583d48
cmp byte [esi + 0x38], 0
jne 0x583d3c
jmp 0x583d43
mov edx, dword [esi + 0x90]
mov edi, eax
or edi, 0x2a
jmp 0x583d48
cmp byte [esi + 0x38], 0
mov edx, ecx
jne 0x583d43
test byte [edx], 8
mov edi, eax
jne 0x583d48
mov edi, eax
or edi, 0x20
mov dword [esi + 0x10], eax
mov ebx, dword [esi + 0xc]
mov eax, dword [esi + 0x14]
mov ecx, edi
or ecx, 8
cmp byte [ebx + 0x160], al
mov eax, dword [ebp + 8]
movzx ebx, byte [edx]
cmovne ecx, edi
test al, 1
cmovne ecx, edi
test bl, 8
je 0x583d8e
cmp byte [esi + 0x38], 0
je 0x583d81
test al, 1
jne 0x583d8b
cmp byte [esi + 0x14], 0xd
je 0x583d92
jmp 0x583d8b
test al, 1
jne 0x583d8b
cmp byte [esi + 0x14], 0xa
je 0x583d92
or ecx, 0x10
test al, 1
jne 0x583dcf
movzx edi, byte [esi + 0x14]
and bl, 4
mov edx, 0x280
shr bl, 2
mov bh, byte [edi + 0x59ddf4]
test bh, bh
setne al
xor al, bl
mov eax, 0x140
cmovne edx, eax
or edx, ecx
mov ecx, edx
or ecx, 0x28000
test bl, bl
je 0x583df8
mov edi, dword [esi + 0xc]
test bh, bh
mov ebx, edx
jne 0x583e08
jmp 0x583dee
shr bl, 2
mov eax, 0x28140
mov edi, 0x28280
test bl, 1
cmovne edi, eax
or ecx, edi
mov edi, dword [esi + 0xc]
test bl, 1
mov ebx, ecx
je 0x583e08
or ecx, 0x2800
mov ebx, ecx
jmp 0x583e08
mov edi, dword [esi + 0xc]
or edx, 0x1400
test bh, bh
cmove edx, ecx
mov ebx, edx
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 4]
mov dword [esi + 0x10], ebx
not edx
and eax, edx
test eax, ebx
mov ebx, dword [esi + 0x1c]
je 0x583eaf
mov edx, dword [ebx + 0x38]
mov ecx, dword [esi + 8]
cmp ecx, edx
ja 0x584fb9
mov eax, dword [ebx + 0x34]
lea ecx, [eax + ecx*4]
mov dword [esi + 8], ecx
nop word [eax + eax]
cmp eax, dword [esi + 8]
je 0x583e79
mov edx, dword [eax]
add eax, 4
mov byte [esi + 2], 0
mov dword [esi + 0xe0], 5
mov ecx, edi
mov dword [esi + 4], eax
push dword [esi + 0x2c]
push dword [esi + 0x24]
push dword [esi + 0x10]
call fcn.004db120
mov eax, dword [esi + 4]
mov edi, dword [esi + 0xc]
mov ebx, dword [esi + 0x1c]
add esp, 0xc
jmp 0x583e40
movsd xmm2, qword [ebx + 0x60]
movups xmm0, xmmword [ebx + 0x38]
movups xmm1, xmmword [ebx + 0x4c]
mov eax, dword [ebx + 0x5c]
movaps xmm3, xmm2
shufps xmm2, xmm2, 0x55
movhps xmm3, qword [ebx + 0x30]
movups xmmword [ebx + 0x30], xmm1
mov dword [ebx + 0x40], eax
movups xmmword [ebx + 0x54], xmm0
movss dword [esi + 8], xmm2
movups xmmword [ebx + 0x44], xmm3
mov dword [ebx + 0x64], 0
mov eax, dword [esi + 0x7c]
mov edx, dword [esi + 0xa4]
mov ecx, dword [esi + 0x5c]
mov dword [esi + 0x60], eax
sub eax, edx
mov dword [esi + 0x64], ecx
mov dword [esi + 0x68], edx
cmp eax, 8
ja 0x583ef3
mov dword [esi + 0xe0], 8
lea ecx, [esi + 0x60]
push 9
call fcn.0057bdc0
add esp, 4
mov eax, dword [esi + 0x64]
mov edx, dword [esi + 0x68]
mov ebx, dword [esi + 0x1c]
mov ecx, dword [ebp + 8]
mov edi, dword [esi + 0xc]
jmp 0x583ef8
mov eax, ecx
mov ecx, dword [ebp + 8]
mov dword [eax + edx + 4], 0
mov dword [eax + edx], 0
mov byte [eax + edx + 8], 0
add edx, 9
movsd xmm0, qword [esi + 0x60]
mov dword [esi + 0x48], edx
movsd qword [esi + 0x40], xmm0
mov eax, dword [edi + 0x138]
test al, 0x3c
je 0x583f74
mov edx, ecx
test dl, 1
mov edx, dword [esi + 0x14]
jne 0x583f77
cmp byte [edi + 0x160], dl
jne 0x583f77
mov edx, dword [esi + 0x48]
test edx, edx
je 0x585071
cmp edx, 4
jbe 0x585098
mov eax, dword [esi + 0x44]
mov ecx, dword [eax + 1]
mov edx, ecx
or dl, 4
mov byte [eax + 1], dl
mov edx, ecx
mov byte [eax + 2], ch
shr ecx, 0x18
shr edx, 0x10
mov byte [eax + 3], dl
mov byte [eax + 4], cl
mov ecx, dword [ebp + 8]
mov eax, dword [edi + 0x138]
mov edx, dword [esi + 0x14]
test al, 0x30
je 0x583fd3
cmp byte [esi + 0x38], 0
je 0x583f8d
test cl, 1
jne 0x583fd3
cmp dl, 0xd
je 0x583f97
jmp 0x583fd3
test cl, 1
jne 0x583fd3
cmp dl, 0xa
jne 0x583fd3
mov edx, dword [esi + 0x48]
test edx, edx
je 0x5850be
cmp edx, 4
jbe 0x5850e5
mov eax, dword [esi + 0x44]
mov ecx, dword [eax + 1]
mov edx, ecx
or dl, 0x10
mov byte [eax + 1], dl
mov edx, ecx
mov byte [eax + 2], ch
shr ecx, 0x18
shr edx, 0x10
mov byte [eax + 3], dl
mov byte [eax + 4], cl
mov ecx, dword [ebp + 8]
mov eax, dword [edi + 0x138]
test eax, 0x3ffc0
je 0x584020
test cl, 1
jne 0x583fec
movzx eax, byte [esi + 0x14]
cmp byte [eax + 0x59ddf4], 0
jne 0x584020
mov edx, dword [esi + 0x48]
test edx, edx
je 0x584f6c
cmp edx, 4
jbe 0x584f93
mov eax, dword [esi + 0x44]
mov ecx, dword [eax + 1]
mov edx, ecx
mov byte [eax + 1], cl
shr ecx, 0x18
or edx, 0x14000
mov byte [eax + 2], dh
shr edx, 0x10
mov byte [eax + 3], dl
mov byte [eax + 4], cl
mov edx, dword [ebx + 0x38]
mov ecx, dword [esi + 8]
cmp ecx, edx
ja 0x584e10
mov ebx, dword [ebx + 0x34]
lea eax, [ebx + ecx*4]
movzx ecx, byte [esi + 0x14]
mov dword [esi + 4], eax
mov dword [esi + 0x34], ecx
jmp 0x584050
cmp ebx, dword [esi + 4]
je 0x58434d
mov ecx, dword [ebx]
mov edx, dword [edi + 0x150]
cmp edx, ecx
jbe 0x584ae2
mov edx, dword [edi + 0x14c]
lea ecx, [ecx + ecx*4]
add ebx, 4
lea eax, [edx + ecx*4]
mov ecx, dword [edx + ecx*4]
mov ecx, dword [ecx*4 + 0x585398]
add ecx, dword [esi + 0x8c]
jmp ecx
mov eax, dword [esi + 0x1c]
mov ecx, dword [ebp + 8]
mov edx, dword [esi + 0x14]
cmp dword [eax + 0x64], 0
je 0x5843d6
mov eax, dword [edi + 0x138]
test eax, 0x3ffc0
je 0x584393
and ecx, 1
jne 0x584399
mov ecx, dword [esi + 0x34]
cmp byte [ecx + 0x59ddf4], 0
mov ecx, dword [ebp + 8]
je 0x584393
cmp dword [esi + 0x48], 0
je 0x584c59
mov eax, dword [esi + 0x44]
or byte [eax], 4
mov eax, dword [edi + 0x138]
test al, 0x30
jne 0x5843a0
jmp 0x5843d6
mov ecx, dword [ebp + 8]
test al, 0x30
je 0x5843d6
cmp byte [esi + 0x38], 0
je 0x5843b2
test cl, 1
jne 0x5843d6
cmp dl, 0xa
je 0x5843bc
jmp 0x5843d6
test cl, 1
jne 0x5843d6
cmp dl, 0xd
jne 0x5843d6
cmp dword [esi + 0x48], 0
je 0x584c7d
mov eax, dword [esi + 0x44]
or byte [eax], 8
mov dword [esi + 0xe0], 6
lea ecx, [esi + 0x60]
lea edx, [esi + 0x40]
mov byte [esi + 1], 0
mov dword [esi + 0xe0], 6
call fcn.004d8170
mov ecx, dword [esi + 0xc]
mov edx, dword [esi + 0x2c]
lea eax, [esi + 0x60]
mov dword [esi + 0xe0], 7
push eax
call fcn.004db580
add esp, 4
mov edi, dword [esi + 0x1c]
mov ecx, dword [esi + 0x68]
mov eax, dword [edi + 0xc]
mov edx, dword [edi + 0x94]
mov dword [esi + 0x10], ecx
lea eax, [eax + eax*2]
lea ecx, [ecx + edx*8 + 0x14]
mov dword [esi + 4], edx
mov edx, dword [esi + 0xa0]
lea eax, [ecx + eax*4]
mov ecx, dword [edi + 0x88]
add eax, dword [edi + 0xa4]
add ecx, dword [edi + 0x7c]
add eax, dword [edi + 0x68]
add ecx, dword [edi + 0x38]
add ecx, dword [edi + 0x44]
add ecx, dword [edi + 0x54]
add ecx, dword [edi + 0x60]
add ecx, dword [edi + 0x98]
lea ebx, [eax + ecx*4]
mov ecx, dword [edx + 0x284]
mov edx, dword [edx + 0x288]
mov eax, 4
and ecx, 0x1f
mov dword [esi + 0x88], edx
shl eax, cl
add ebx, eax
mov eax, dword [esi + 0x60]
mov dword [esi + 0xc], ebx
cmp ebx, edx
mov ebx, dword [esi + 0x64]
mov dword [esi + 0x34], eax
mov dword [esi + 0x20], ebx
jbe 0x5844ef
mov eax, dword [esi + 0x9c]
mov edx, dword [esi + 4]
shr eax, cl
mov ecx, eax
cmp eax, edx
jae 0x584c39
mov eax, dword [edi + 0x90]
mov edx, edi
mov ebx, dword [eax + ecx*8]
mov edi, dword [eax + ecx*8 + 4]
lock inc dword [ebx]
jle 0x5851a0
cmp dword [edx + 0x20], 1
jne 0x5844ce
mov eax, dword [edx + 0x28]
lock dec dword [eax]
jne 0x5844ce
mov ecx, dword [edx + 0x28]
mov edx, dword [edx + 0x2c]
call fcn.004c2b10
mov eax, dword [esi + 0x3c]
mov edx, dword [esi + 0x84]
mov ecx, dword [eax + 4]
mov dword [ecx + 0x20], 1
mov dword [ecx + 0x24], edx
mov dword [ecx + 0x28], ebx
mov ebx, dword [esi + 0x20]
mov dword [ecx + 0x2c], edi
mov edi, ecx
mov ecx, edi
mov edx, ebx
push dword [esi + 0x10]
call fcn.004db950
add esp, 4
test eax, eax
je 0x58454a
mov eax, dword [eax]
cmp dword [edi + 0xa4], 0
mov ecx, dword [esi + 0x34]
mov dword [esi + 0x24], eax
mov eax, dword [edi + 0xa8]
mov dword [edi + 0xa4], ecx
mov dword [edi + 0xa8], ebx
mov dword [edi + 0xac], 0
je 0x58453e
push eax
push 0
push dword [0x5fd290]
call dword [sym.imp.kernel32.dll_HeapFree]
mov dword [esi + 4], 0
jmp 0x5849ec
mov ecx, dword [esi + 0x10]
test ecx, ecx
js 0x584fd9
lea eax, [ecx - 0x7ffffff5]
mov dword [esi + 0x1c], edi
cmp eax, 0x80000002
jbe 0x585008
lea edi, [ecx + 0xb]
mov ebx, 4
mov eax, 4
and edi, 0xfffffffc
je 0x584596
movzx eax, byte [0x5fd2ec]
xor ecx, ecx
mov edx, edi
call fcn.0056a9f0
mov ecx, dword [esi + 0x10]
test eax, eax
je 0x58510b
mov dword [eax], 1
lea edi, [ecx + 0x14]
mov dword [eax + 4], 1
mov dword [esi + 0x30], eax
add eax, 8
push ecx
push dword [esi + 0x20]
mov dword [esi + 4], eax
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov edx, dword [esi + 0x1c]
mov eax, dword [edx + 0xc]
mov ecx, dword [edx + 0x94]
mov dword [esi + 0x2c], ecx
lea eax, [eax + eax*2]
lea ecx, [edi + ecx*8]
lea eax, [ecx + eax*4]
mov ecx, dword [edx + 0x88]
add eax, dword [edx + 0xa4]
add ecx, dword [edx + 0x7c]
add eax, dword [edx + 0x68]
add ecx, dword [edx + 0x38]
add ecx, dword [edx + 0x44]
add ecx, dword [edx + 0x54]
add ecx, dword [edx + 0x60]
add ecx, dword [edx + 0x98]
lea eax, [eax + ecx*4]
mov ecx, dword [esi + 0x3c]
mov edx, dword [ecx]
movzx ecx, byte [edx + 0x284]
mov dword [esi + 0x28], edx
shl ebx, cl
add eax, ebx
cmp eax, dword [edx + 0x288]
jbe 0x584647
mov eax, dword [esi + 0x28]
cmp dword [eax + 0x48], 1
jne 0x584631
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0x28]
mov eax, dword [eax + 0x6c]
cmp eax, dword [ecx + 0x4c]
jae 0x584aa3
mov ecx, dword [esi + 0x3c]
mov byte [esi + 3], 1
mov dword [esi + 0xe0], 3
call fcn.004d9ee0
mov ecx, dword [esi + 0x3c]
mov byte [esi + 3], 1
mov dword [esi + 0xe0], 3
call fcn.004da710
test eax, eax
je 0x584683
mov ecx, dword [esi + 0x30]
lock dec dword [ecx]
jne 0x5846f9
mov dword [esi + 4], 1
mov edx, dword [esi + 0x10]
call fcn.004c2b10
xor ebx, ebx
jmp 0x5849a2
cmp dword [esi + 0x10], 0
je 0x584ca1
mov eax, dword [esi + 0x28]
mov edi, dword [esi + 0x1c]
mov ebx, edx
mov dword [esi + 0x2c], ebx
mov ecx, dword [eax + 0x284]
mov eax, 1
mov edx, dword [edi + 0x7c]
and ecx, 0x1f
mov dword [esi + 8], ecx
shl eax, cl
mov ecx, eax
mov eax, dword [edi + 0x74]
sub eax, edx
cmp eax, ecx
mov eax, dword [esi + 4]
movzx eax, byte [eax]
mov dword [esi + 0x24], eax
jae 0x5846e0
mov eax, ecx
lea ecx, [edi + 0x74]
mov byte [esi + 3], 1
mov dword [esi + 4], eax
push eax
call fcn.00581ee0
add esp, 4
mov edi, dword [esi + 0x1c]
mov ecx, dword [esi + 4]
mov edx, dword [edi + 0x7c]
mov eax, dword [esi + 0x24]
and eax, 1
shl eax, 0x1b
cmp dword [esi + 8], 3
mov dword [esi + 0x24], eax
mov eax, dword [edi + 0x78]
jae 0x584707
mov ebx, edx
jmp 0x58474b
mov dword [esi + 4], 1
xor ebx, ebx
jmp 0x5849a2
movaps xmm0, xmmword [0x589850]
mov edi, ecx
and ecx, 0xfffffff8
and edi, 6
mov ebx, ecx
mov dword [esi + 4], edi
lea edi, [eax + edx*4 + 0x10]
add edx, ecx
nop word cs:[eax + eax]
nop dword [eax + eax]
movups xmmword [edi - 0x10], xmm0
movups xmmword [edi], xmm0
add edi, 0x20
add ebx, 0xfffffff8
jne 0x584730
test ecx, ecx
mov edi, dword [esi + 0x1c]
mov ecx, dword [esi + 4]
mov ebx, edx
jne 0x58475f
mov edx, ebx
nop dword [eax]
lea ebx, [edx + 1]
mov dword [eax + edx*4], 0x80000000
dec ecx
mov edx, ebx
jne 0x584750
mov eax, dword [esi + 0x2c]
mov dword [edi + 0x7c], ebx
mov edi, dword [esi + 0x28]
mov ecx, dword [edi + 0x26c]
mov edx, dword [edi + 0x268]
mov ebx, dword [edi + 0x264]
or dword [esi + 0x24], eax
mov eax, dword [edi + 0x260]
or edx, dword [edi + 0x278]
or eax, dword [edi + 0x270]
or ecx, dword [edi + 0x27c]
or ebx, dword [edi + 0x274]
or eax, edx
or ebx, ecx
or ebx, eax
je 0x58491e
mov eax, dword [esi + 0x28]
mov ecx, dword [eax + 0x284]
and ecx, 0x1f
cmp ecx, 0x1b
jae 0x585123
mov edx, 2
shl edx, cl
cmp edx, 0x8000000
jae 0x585164
mov eax, dword [esi + 0x28]
or edx, 0x20000000
xor ecx, ecx
mov dword [esi + 0x38], edx
add eax, 0x260
mov dword [esi + 0x8c], eax
cmp ecx, 0x101
mov eax, 0x100
cmovae eax, ecx
mov dword [esi + 0x14], eax
nop dword [eax]
cmp dword [esi + 0x14], ecx
je 0x58491e
mov dword [esi + 4], ecx
mov eax, ecx
mov eax, dword [esi + 4]
and al, 0x78
mov dword [esi + 0xcc], 0
mov dword [esi + 0xc8], 0
mov dword [esi + 0xc4], 0
mov dword [esi + 0xc0], 1
mov dword [esi + 0xbc], 0
mov dword [esi + 0xb8], 0
mov dword [esi + 0xb4], 0
mov dword [esi + 0xb0], 0
mov ecx, dword [esi + 4]
shr al, 3
neg al
movsx edi, al
mov edx, dword [esi + edi + 0xc8]
mov eax, dword [esi + edi + 0xcc]
mov dword [esi + 8], edi
mov ch, cl
and ch, 7
mov cl, ch
shld eax, edx, cl
shl edx, cl
not cl
mov dword [esi + 0x2c], eax
mov eax, dword [esi + 4]
mov ebx, dword [esi + edi + 0xc4]
shr eax, 3
mov edi, ebx
and eax, 0x10
shr edi, 1
shr edi, cl
mov cl, ch
or edi, edx
mov edx, dword [esi + 8]
mov edx, dword [esi + edx + 0xc0]
shld ebx, edx, cl
shl edx, cl
mov ecx, dword [esi + 0x8c]
and edi, dword [ecx + eax + 8]
and edx, dword [ecx + eax]
and ebx, dword [ecx + eax + 4]
or edx, edi
mov edi, dword [esi + 0x2c]
and edi, dword [ecx + eax + 0xc]
mov eax, dword [esi + 4]
or ebx, edi
lea ecx, [eax + 1]
or ebx, edx
je 0x584800
cmp eax, 0xff
ja 0x58491e
mov dword [esi + 4], ecx
mov ecx, dword [esi + 0x28]
mov edx, dword [esi + 0x1c]
shl eax, 8
mov byte [esi + 3], 1
mov dword [esi + 0xe0], 3
movzx eax, ax
push dword [esi + 0x38]
push eax
push dword [esi + 0x24]
call fcn.004da7e0
mov ecx, dword [esi + 4]
add esp, 0xc
jmp 0x5847e8
mov edi, dword [esi + 0x1c]
mov ecx, dword [esi + 0x10]
mov eax, dword [esi + 0x30]
add dword [edi + 0x68], ecx
lock inc dword [eax]
jle 0x5851a0
mov edx, dword [edi + 0x94]
cmp edx, dword [edi + 0x8c]
jne 0x584962
lea ecx, [edi + 0x8c]
mov dword [esi + 0xe0], 4
call fcn.00418c70
mov edi, dword [esi + 0x1c]
mov ecx, dword [esi + 0x10]
mov edx, dword [edi + 0x94]
mov eax, dword [edi + 0x90]
mov ebx, dword [esi + 0x30]
mov dword [eax + edx*8], ebx
mov dword [eax + edx*8 + 4], ecx
inc edx
mov eax, ecx
mov ecx, edi
mov dword [edi + 0x94], edx
mov byte [esi + 3], 0
mov dword [esi + 0xe0], 3
mov edx, ebx
push dword [esi + 0x24]
push eax
call fcn.004da8d0
add esp, 8
mov bl, 1
mov dword [esi + 4], 0
mov eax, dword [esi + 0x3c]
mov edi, dword [esi + 0x34]
mov edx, dword [esi + 0x20]
mov ecx, dword [eax + 4]
mov eax, dword [ecx + 0xa8]
cmp dword [ecx + 0xa4], 0
mov dword [ecx + 0xa4], edi
mov edi, ecx
mov dword [ecx + 0xa8], edx
mov dword [ecx + 0xac], 0
je 0x5849e4
push eax
push 0
push dword [0x5fd290]
call dword [sym.imp.kernel32.dll_HeapFree]
test bl, bl
je 0x584a89
mov eax, dword [esi + 0x88]
cmp dword [esi + 0xc], eax
jbe 0x584a44
mov ecx, dword [edi + 0x24]
mov eax, dword [edi + 0x20]
mov edx, dword [edi + 0x2c]
mov dword [esi + 0x84], ecx
mov ecx, dword [edi + 0x28]
cmp eax, 1
mov dword [edi + 0x20], 0
je 0x584a49
cmp eax, 2
je 0x584a53
mov byte [esi + 0x1b], 0
mov dword [esi + 0xe0], 1
mov ecx, str.state_saver_does_not_have_saved_state_ID8
mov edx, 0x28
push 0x59bba4
call fcn.0057fb30
add esp, 4
jmp 0x5851a0
mov eax, dword [esi + 0x3c]
jmp 0x584a63
lock dec dword [ecx]
jne 0x584a53
call fcn.004c2b10
mov eax, dword [esi + 0x3c]
mov dword [esi + 0xe0], 1
mov edi, dword [eax + 4]
mov ecx, dword [eax]
mov byte [esi + 0x1b], 0
mov dword [esi + 0xe0], 1
mov edx, edi
push dword [esi + 0x24]
push dword [ebp + 8]
push dword [esi + 0x84]
call fcn.004da7e0
add esp, 0xc
mov eax, dword [esi + 0xd8]
mov edx, dword [esi + 0x24]
mov dword fs:[0], eax
mov eax, dword [esi + 4]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [esi + 0x28]
cmp dword [eax + 0x50], 1
jne 0x584661
mov eax, dword [esi + 0x28]
mov edx, dword [esi + 0x1c]
mov eax, dword [eax + 0x54]
mov edi, dword [edx + 0x70]
cmp dword [edx + 0xb0], 0
je 0x584b27
mov ecx, dword [edx + 0xb8]
mov ebx, dword [edx + 0xb4]
mov edx, edi
mov edi, ecx
sub edi, ebx
neg edi
sub ecx, ebx
cmovb ecx, edi
mov edi, edx
jmp 0x584b29
mov byte [esi + 1], 1
mov dword [esi + 0xe0], 6
push 0x59d604
call fcn.0057f710
add esp, 4
jmp 0x5851a0
mov ecx, edx
mov edx, dword [esi + 0x10]
mov byte [esi + 2], 0
mov dword [esi + 0xe0], 5
push 0x59eb20
call fcn.0057f710
add esp, 4
jmp 0x5851a0
xor ecx, ecx
add ecx, edi
mul dword [esi + 0x2c]
mov edx, 0xffffffff
cmovno edx, eax
cmp ecx, edx
jae 0x584631
jmp 0x584661
mov edx, dword [esi + 0x10]
mov byte [esi + 2], 0
mov dword [esi + 0xe0], 5
push 0x59eb10
call fcn.0057f710
add esp, 4
jmp 0x5851a0
mov edx, dword [esi + 0x20]
mov byte [esi + 2], 0
mov dword [esi + 0xe0], 5
push 0x59eb30
call fcn.0057f710
add esp, 4
jmp 0x5851a0
mov edx, dword [esi + 0x80]
mov dword [esi + 0xe0], 0
mov ecx, edi
push 0x59ba8c
call fcn.0057f710
add esp, 4
jmp 0x5851a0
mov byte [esi + 2], 0
mov dword [esi + 0xe0], 5
xor ecx, ecx
xor edx, edx
push 0x59e5d0
call fcn.0057f710
add esp, 4
jmp 0x5851a0
mov byte [esi + 0x1b], 1
mov dword [esi + 0xe0], 1
push 0x59bce4
call fcn.0057f710
add esp, 4
jmp 0x5851a0
mov byte [esi + 1], 1
mov dword [esi + 0xe0], 6
xor ecx, ecx
xor edx, edx
push 0x59e670
call fcn.0057f710
add esp, 4
jmp 0x5851a0
mov byte [esi + 1], 1
mov dword [esi + 0xe0], 6
xor ecx, ecx
xor edx, edx
push 0x59e680
call fcn.0057f710
add esp, 4
jmp 0x5851a0
mov byte [esi + 3], 1
xor ecx, ecx
xor edx, edx
push 0x59e5c0
call fcn.0057f710
add esp, 4
jmp 0x5851a0
mov eax, dword [esi + 0x20]
lea edx, [esi + 0xa8]
lea ecx, [esi + 0xac]
mov dword [esi + 0x40], 0x59eae8
mov dword [esi + 0x44], 3
mov dword [esi + 0x50], 0
mov byte [esi + 2], 0
mov dword [esi + 0xe0], 5
mov dword [esi + 0x60], edx
mov dword [esi + 0x64], 0x45c6a0
mov dword [esi + 0x68], ecx
lea ecx, [esi + 0x60]
lea edx, [esi + 0x94]
mov dword [esi + 0x6c], 0x45c6a0
mov dword [esi + 0x70], edx
mov dword [esi + 0x48], ecx
lea ecx, [esi + 0x40]
mov edx, 0x59eb00
mov dword [esi + 0x74], 0x4c6db0
mov dword [esi + 0x4c], 3
mov dword [esi + 0xac], eax
call fcn.0057f680
jmp 0x5851a0
mov edx, dword [esi + 4]
mov byte [esi + 2], 0
mov dword [esi + 0xe0], 5
mov ecx, edi
push 0x59e610
call fcn.0057f6b0
add esp, 4
jmp 0x5851a0
mov byte [esi + 2], 0
mov dword [esi + 0xe0], 5
mov edx, eax
push 0x59e620
call fcn.0057f6b0
add esp, 4
jmp 0x5851a0
mov byte [esi + 2], 0
mov dword [esi + 0xe0], 5
mov ecx, 5
push 0x59e5f0
call fcn.0057f6b0
add esp, 4
jmp 0x5851a0
mov byte [esi + 2], 0
mov dword [esi + 0xe0], 5
mov ecx, 4
push 0x59ddc4
call fcn.0057f770
add esp, 4
jmp 0x5851a0
mov byte [esi + 1], 1
mov dword [esi + 0xe0], 6
push 0x59eb40
call fcn.0057f770
add esp, 4
jmp 0x5851a0
mov edx, dword [esi + 0x28]
mov byte [esi + 2], 0
mov dword [esi + 0xe0], 5
mov ecx, 0xd
push 0x59e650
call fcn.0057f770
add esp, 4
jmp 0x5851a0
mov byte [esi + 1], 1
mov dword [esi + 0xe0], 6
mov ecx, 1
xor edx, edx
push 0x59e5e0
call fcn.0057f6b0
add esp, 4
jmp 0x5851a0
dec edx
mov byte [esi + 1], 1
mov dword [esi + 0xe0], 6
mov ecx, 4
push 0x59ddc4
call fcn.0057f770
add esp, 4
jmp 0x5851a0
mov byte [esi + 2], 0
mov dword [esi + 0xe0], 5
push 0x59eb40
call fcn.0057f770
add esp, 4
jmp 0x5851a0
mov dword [esi + 0xe0], 2
mov ecx, str.called__Result::unwrap____on_an__Err__value
mov edx, 0x2b
push 0x59ab84
push 0x59aa6c
lea eax, [esi + 0x60]
push eax
call fcn.0057fa90
add esp, 0xc
jmp 0x5851a0
mov dword [esi + 0xe0], 2
mov ecx, str.called__Result::unwrap____on_an__Err__value
mov edx, 0x2b
push 0x58d044
push 0x58cf24
lea eax, [esi + 0x60]
push eax
call fcn.0057fa90
add esp, 0xc
jmp 0x5851a0
mov ecx, 0x59e630
mov byte [esi + 2], 0
mov dword [esi + 0xe0], 5
call fcn.0057fb10
jmp 0x5851a0
mov ecx, 0x59e640
mov byte [esi + 2], 0
mov dword [esi + 0xe0], 5
call fcn.0057fb10
jmp 0x5851a0
mov byte [esi + 1], 1
mov dword [esi + 0xe0], 6
mov ecx, 1
xor edx, edx
push 0x59e5e0
call fcn.0057f6b0
add esp, 4
jmp 0x5851a0
dec edx
mov byte [esi + 1], 1
mov dword [esi + 0xe0], 6
mov ecx, 4
push 0x59ddc4
call fcn.0057f770
add esp, 4
jmp 0x5851a0
mov byte [esi + 1], 1
mov dword [esi + 0xe0], 6
mov ecx, 1
xor edx, edx
push 0x59e5e0
call fcn.0057f6b0
add esp, 4
jmp 0x5851a0
dec edx
mov byte [esi + 1], 1
mov dword [esi + 0xe0], 6
mov ecx, 4
push 0x59ddc4
call fcn.0057f770
add esp, 4
jmp 0x5851a0
mov ecx, 4
mov edx, edi
mov dword [esi + 0xe0], 2
call fcn.0057f230
jmp 0x5851a0
mov eax, 1
mov dword [esi + 0x64], 0
mov byte [esi + 3], 1
mov dword [esi + 0xe0], 3
mov edx, 0x2b
shl eax, cl
mov ecx, str.called__Result::unwrap____on_an__Err__value
mov dword [esi + 0x60], eax
push 0x59bcf4
push 0x59aa5c
lea eax, [esi + 0x60]
push eax
call fcn.0057fa90
add esp, 0xc
jmp 0x5851a0
mov dword [esi + 0x64], 0
mov dword [esi + 0x60], 0x8000000
mov byte [esi + 3], 1
mov dword [esi + 0xe0], 3
mov ecx, str.called__Result::unwrap____on_an__Err__value
mov edx, 0x2b
push 0x59bd04
push 0x59aa5c
lea eax, [esi + 0x60]
push eax
call fcn.0057fa90
add esp, 0xc
ud2