Function at 0x589f50
Capabilities:
Encrypt data using speck
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x520
mov edi, ecx
mov ecx, dword [ebp + 0x14]
cmp edx, 0x25
je 0x58a076
mov ebx, 0x5317629f
cmp edx, 0x26
je 0x58a12b
cmp edx, 0x27
jne 0x58a1e3
mov edx, dword [ebp + 0x34]
add ebx, 0xace89d69
movsd xmm0, qword [0x7dc5e0]
movsd qword [esp + 0xd8], xmm0
movsd xmm0, qword [0x7dc5d8]
movsd qword [esp + 0xd0], xmm0
mov dword [esp + 0xd8], edi
mov dword [esp + 0xdc], ecx
mov eax, dword [edx + 0xc]
shl eax, 0x18
or eax, dword [edx + 8]
mov dword [esp + 0xe0], eax
mov eax, dword [edx + 4]
cmp eax, 6
je 0x58a39c
cmp eax, 0x23
je 0x58a30f
cmp eax, 0x32
jne 0x58a474
xor bl, 0x2c
mov esi, 0x15
movzx eax, bl
cmp eax, 0x59
je 0x58a409
xor esi, esi
lea edi, [esp + 0xd0]
jmp 0x58a061
inc esi
mov dword [esp + 0xd0], 3
mov dword [esp + 0xdc], 0
mov dword [esp], edi
mov dword [esp + 4], 0
call fcn.00595480
mov eax, dword [esp + 0xd0]
mov ecx, eax
not ecx
and ecx, 1
add ecx, eax
setne cl
movzx ecx, cl
add ecx, eax
mov dword [esp + 0xd0], ecx
mov dword [esp + 0xe0], 3
mov eax, esi
and eax, 1
inc eax
xor eax, esi
test esi, esi
je 0x58a010
test eax, eax
je 0x58a010
jmp 0x58a47b
mov ebx, ecx
mov dword [esp + 0x118], 0
mov dword [esp + 0x114], 0
mov dword [esp + 0x110], 0
mov dword [esp + 0x10c], 0
mov dword [esp + 0x104], 0
mov dword [esp + 0x100], 0
call fcn.00595a60
test eax, eax
je 0x58a496
mov ecx, 0x7000000b
cmp eax, 0x5000f
je 0x58a58f
cmp eax, 0x50007
jne 0x58a5a7
mov edi, 0xffffffff
xor ebx, ebx
jmp 0x58a103
inc ebx
mov dword [esp], str.Fridge_is_not_supported_in_this_machine_n
call fcn.004414c0
dec edi
mov ecx, 0x70000052
mov eax, ebx
and eax, 1
xor eax, edi
setne al
movzx eax, al
cmp ebx, eax
jb 0x58a0f0
mov dword [esp + 0xc8], 0
mov dword [esp + 0xcc], ecx
jmp 0x58a5bd
mov dword [esp + 0xcc], edi
mov edx, dword [ebp + 0x30]
add ebx, 0xace89d7d
mov al, bl
add al, 0x50
mov byte [esp + 0xbc], al
mov eax, ecx
imul eax, eax
and eax, 3
cmp eax, 3
sete al
movzx eax, al
cmp ecx, eax
jne 0x58d1c7
mov byte [esp + 0xc4], 0x51
mov byte [esp + 0xb8], 0x6a
mov byte [esp + 0xc3], 0x7a
mov eax, dword [edx + 4]
mov edi, 0x700002bb
lea ecx, [eax - 3]
cmp ecx, 0x23
ja case.default.0x58a1dc
mov dword [esp + 0xac], 0xa
mov eax, 7
mov edx, 0x14
mov dword [esp + 0xa8], 5
mov dword [esp + 0xa4], 0x10
mov dword [esp + 0xb4], ecx
mov ecx, 0xe
mov byte [esp + 0xb3], bl
mov esi, 0x1d
mov dword [esp + 0xc8], ebx
mov ebx, dword [esp + 0xb4]
jmp dword [ebx*4 + 0x7dc448]
mov dword [esp + 0xcc], edi
mov dword [esp + 4], 0x20
mov dword [esp], 1
call fcn.00493840
mov edi, eax
test edi, edi
mov esi, 0x70000003
je 0x58c998
xor eax, eax
test al, al
jne 0x58c998
mov byte [esp + 0x77], 0x34
lea esi, [esp + 0x11c]
mov dword [esp], esi
mov dword [esp + 8], 0x400
mov dword [esp + 4], 0
call fcn.007c51a0
mov dword [esp + 4], esi
mov eax, dword [esp + 0xcc]
mov dword [esp], eax
mov dword [esp + 8], 0x400
call fcn.0043cd60
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
sete cl
movzx ecx, cl
cmp eax, ecx
jne 0x58a6ff
mov dword [esp + 0xa4], 0x70000003
mov dword [esp + 0xc8], eax
mov dword [esp + 0xb4], eax
mov byte [esp + 0xc3], al
mov byte [esp + 0xb3], al
mov byte [esp + 0x9a], al
mov byte [esp + 0x76], al
mov byte [esp + 0x9b], al
mov byte [esp + 0xa3], al
mov byte [esp + 0x87], al
mov byte [esp + 0x7f], al
mov byte [esp + 0xac], al
mov dword [esp + 0xbc], eax
mov dword [esp + 0x9c], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0xc4], eax
mov dword [esp + 0xb8], eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x80], eax
mov dword [esp + 0x6c], eax
jmp 0x58b62e
xor esi, esi
lea edi, [esp + 0xd0]
jmp 0x58a388
mov ebx, 7
mov eax, esi
and eax, 1
xor eax, esi
cmp eax, 0xffffffff
setne al
movzx eax, al
add esi, eax
mov dword [esp + 0xd0], 3
mov dword [esp + 0xdc], 0
mov dword [esp], edi
mov dword [esp + 4], 0
call fcn.00595480
mov eax, dword [esp + 0xd0]
mov ecx, eax
and ecx, 1
xor ecx, eax
cmp ecx, 0xffffffff
setne cl
movzx ecx, cl
add ecx, eax
mov dword [esp + 0xd0], ecx
mov dword [esp + 0xe0], 1
mov eax, esi
imul eax, eax
and eax, 3
cmp eax, 2
sbb eax, eax
and eax, 1
cmp esi, eax
jb 0x58a320
cmp ebx, 7
jne 0x58a3b0
imul ebx, ebx
and ebx, 3
cmp ebx, 2
jb 0x58a47b
mov esi, 0xd
lea edi, [esp + 0xd0]
mov dword [esp + 0xd0], 3
mov dword [esp + 0xdc], 0
mov dword [esp], edi
mov dword [esp + 4], 0
call fcn.00595480
mov eax, dword [esp + 0xd0]
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
adc eax, 0
mov dword [esp + 0xd0], eax
mov dword [esp + 0xe0], 2
cmp esi, 0xd
je 0x58a47b
mov eax, esi
and eax, 1
inc eax
xor eax, esi
je 0x58a47b
lea edi, [esp + 0xd0]
mov dword [esp + 0xd0], 3
mov dword [esp + 0xdc], 0
mov dword [esp], edi
mov dword [esp + 4], 0
call fcn.00595480
mov eax, dword [esp + 0xd0]
mov ecx, eax
or ecx, 2
mov edx, eax
xor edx, 2
add edx, ecx
setne cl
movzx ecx, cl
add ecx, eax
mov dword [esp + 0xd0], ecx
mov dword [esp + 0xe0], 3
jmp 0x58a47b
lea edi, [esp + 0xd0]
mov eax, dword [ebp + 0x1c]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0x34]
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.00594590
jmp 0x58c99a
mov dword [esp + 0xc8], 0
mov ecx, dword [ebp + 0x24]
mov dword [esp + 0xcc], 0x700002bb
test ecx, ecx
jne 0x58a4c4
mov eax, ecx
and eax, 1
xor eax, ecx
not eax
test eax, eax
jne 0x58a5bd
mov esi, dword [ebp + 0x28]
test esi, esi
sete al
mov ecx, esi
or ecx, 2
mov edx, esi
xor edx, 2
add edx, ecx
setne cl
test ebx, ebx
je 0x58a5bd
mov edx, ebx
imul edx, edx
and edx, 3
cmp edx, 2
je 0x58a5bd
and al, cl
jne 0x58a5bd
mov eax, dword [ebp + 0x24]
mov al, byte [eax]
test al, al
je 0x58a5bd
lea eax, [esp + 0x114]
mov dword [esp + 0x10], eax
lea eax, [esp + 0x10c]
mov dword [esp + 0xc], eax
lea eax, [esp + 0x110]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0x14]
mov dword [esp + 4], eax
mov dword [esp], esi
call fcn.00412cf0
test eax, eax
jne 0x58a9db
mov eax, dword [esp + 0x114]
cmp eax, edi
sete dl
mov ecx, eax
and ecx, 1
xor ecx, eax
cmp ecx, 0xffffffff
setne ch
cmp dword [ebp + 0x1c], 3
sete cl
je 0x58aa94
and dl, ch
jne 0x58aa94
mov eax, dword [ebp + 0x24]
mov dword [esp + 4], eax
mov dword [esp], str.License_file__s_exists_in_the_incorrect_vendors_folder_n
call fcn.004414c0
mov dword [esp + 0xcc], 0x70000013
jmp 0x58a5bd
mov dword [esp + 0xc8], 0
mov dword [esp + 0xcc], 0x7000000b
jmp 0x58a5bd
mov dword [esp + 0xc8], 0
mov dword [esp + 0xcc], 0x7000002b
xor ecx, ecx
mov esi, dword [esp + 0xc8]
jmp 0x58a5eb
mov eax, ecx
or eax, 2
mov edx, ecx
xor edx, 2
add edx, eax
setne al
movzx eax, al
add ecx, eax
mov eax, dword [esp + 0x118]
mov edx, ecx
not edx
and edx, 1
add edx, ecx
setne dl
movzx edx, dl
cmp ecx, edx
jb 0x58a5d0
test eax, eax
je 0x58a610
xor ecx, ecx
test cl, cl
jne 0x58a610
mov dword [esp], eax
call fcn.00627240
mov bl, 0x7e
test esi, esi
jne 0x58a623
mov eax, esi
imul eax, eax
and eax, 3
cmp eax, 2
jb 0x58a665
mov al, 0x5d
movzx eax, al
cmp eax, 6
je 0x58a65d
cmp eax, 0x15
jne 0x58a65d
xor edi, edi
jmp 0x58a649
inc edi
mov dword [esp], esi
call fcn.0041d160
test edi, edi
jne 0x58a665
mov eax, edi
or eax, 2
mov ecx, edi
xor ecx, 2
add ecx, eax
jne 0x58a640
jmp 0x58a665
mov dword [esp], esi
call fcn.0041d160
movzx eax, bl
cmp eax, 0x2c
mov esi, dword [esp + 0x110]
test esi, esi
je 0x58a826
mov al, 0x4c
xor ecx, ecx
test cl, cl
jne 0x58a826
xor ebx, ebx
movzx eax, al
cmp eax, 2
je 0x58a7eb
cmp eax, 0x14
jne 0x58a6e7
mov dword [esp], esi
call fcn.004936c0
mov dword [esp + 0x110], 0
mov eax, dword [esp + 0xcc]
jmp 0x58c99a
mov eax, ebx
or eax, 2
mov ecx, ebx
xor ecx, 2
add ecx, eax
setne al
movzx eax, al
add ebx, eax
mov dword [esp], esi
call fcn.004936c0
mov dword [esp + 0x110], 0
mov eax, 3
sub eax, ebx
xor eax, ebx
setne al
movzx eax, al
cmp ebx, eax
jb 0x58a6c0
jmp 0x58a826
mov al, 6
movzx eax, al
cmp eax, 6
je 0x58a832
cmp eax, 0x72
jne 0x58a91b
mov dword [esp + 4], 0xc
mov dword [esp], 1
call fcn.00493840
mov dword [edi + 4], eax
xor ebx, ebx
mov esi, 0x70000003
test eax, eax
je 0x58c982
lea eax, [edi + 4]
mov dword [esp + 0x70], eax
mov dword [esp + 0xc8], eax
mov dword [esp + 0xb4], eax
mov byte [esp + 0x9a], al
mov byte [esp + 0x76], al
mov byte [esp + 0xc3], al
mov byte [esp + 0xb3], al
mov byte [esp + 0x9b], al
mov byte [esp + 0xa3], al
mov byte [esp + 0x87], al
mov byte [esp + 0xac], al
mov byte [esp + 0x7f], al
mov dword [esp + 0xbc], eax
mov dword [esp + 0x9c], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0xc4], eax
mov dword [esp + 0xb8], eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x80], eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x68], eax
mov dword [esp + 0x58], eax
jmp 0x58b75e
mov edi, 0xffffffff
jmp 0x58a815
inc ebx
mov dword [esp], esi
call fcn.004936c0
mov dword [esp + 0x110], 0
dec edi
mov eax, ebx
and eax, 1
xor eax, edi
setne al
movzx eax, al
cmp ebx, eax
jb 0x58a800
mov eax, dword [esp + 0xcc]
jmp 0x58c99a
mov dword [esp + 4], 0xc
mov dword [esp], 1
call fcn.00493840
lea ecx, [edi + 4]
mov dword [esp + 0x70], ecx
mov dword [edi + 4], eax
mov esi, 0x70000003
test eax, eax
jne 0x58a9e7
imul eax, eax
and eax, 3
xor ebx, ebx
cmp eax, 2
mov dword [esp + 0xc8], eax
mov dword [esp + 0xb4], eax
mov byte [esp + 0x9a], al
mov byte [esp + 0x76], al
mov byte [esp + 0x9b], al
mov byte [esp + 0xa3], al
mov byte [esp + 0xc3], al
mov byte [esp + 0xb3], al
mov byte [esp + 0x87], al
mov byte [esp + 0xac], al
mov byte [esp + 0x7f], al
mov dword [esp + 0xbc], eax
mov dword [esp + 0x60], eax
mov dword [esp + 0xc4], eax
mov dword [esp + 0xb8], eax
mov dword [esp + 0x9c], eax
mov dword [esp + 0x80], eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x68], eax
mov dword [esp + 0x58], eax
mov ecx, 0x16
jb 0x58c982
jmp 0x58b74f
mov esi, 0x70000003
mov ecx, 0xd
mov dword [esp + 0xc8], eax
mov byte [esp + 0xc3], al
mov byte [esp + 0xb3], al
mov byte [esp + 0x9a], al
mov byte [esp + 0x7f], al
mov byte [esp + 0x76], al
mov byte [esp + 0x87], al
mov byte [esp + 0xac], al
mov dword [esp + 0xb4], eax
mov dword [esp + 0xbc], eax
mov dword [esp + 0x9c], eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0xc4], eax
mov dword [esp + 0xb8], eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x80], eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x68], eax
mov dword [esp + 0x58], eax
jmp 0x58b980
add eax, 0xffffffcf
cmp eax, 2
mov dword [esp + 0xc8], eax
jb case.0x58a1dc.25
jmp case.0x58a1dc.4
mov dword [esp + 0xcc], eax
jmp 0x58a5bd
mov dword [esp + 0xc8], eax
mov dword [esp + 0xb4], eax
mov dword [esp + 0xbc], eax
mov byte [esp + 0x9a], al
mov byte [esp + 0x76], al
mov byte [esp + 0x9b], al
mov byte [esp + 0xa3], al
mov byte [esp + 0xc3], al
mov byte [esp + 0xb3], al
mov byte [esp + 0x87], al
mov byte [esp + 0xac], al
mov byte [esp + 0x7f], al
mov dword [esp + 0x60], eax
mov dword [esp + 0xc4], eax
mov dword [esp + 0xb8], eax
mov dword [esp + 0x9c], eax
mov dword [esp + 0x80], eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x68], eax
mov dword [esp + 0x58], eax
mov ecx, 0x16
jmp 0x58b74f
mov dl, 0x67
movzx edx, dl
cmp edx, 0x1b
je 0x58aaa1
cmp edx, 0x3a
mov dl, 0x2c
test cl, cl
je 0x58aaf6
movzx ecx, dl
cmp ecx, 0x2c
jne 0x58aad8
mov dword [esp], eax
call fcn.0059ab80
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete cl
movzx ecx, cl
cmp eax, ecx
je 0x58aaf6
mov dword [esp + 0xcc], eax
jmp 0x58a5bd
mov dword [esp], eax
call fcn.0059ab80
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
sete cl
movzx ecx, cl
cmp eax, ecx
jne 0x58ab8d
mov eax, dword [esp + 0x10c]
mov ecx, dword [esp + 0x110]
lea edx, [esp + 0x118]
mov dword [esp + 8], edx
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.00627130
mov dword [esp + 0xcc], 0x70000013
test eax, eax
jne 0x58a5bd
mov ecx, 3
sub ecx, eax
xor ecx, eax
je 0x58a5bd
mov eax, dword [esp + 0x118]
mov ecx, dword [eax + 0xc]
test ecx, ecx
jne 0x58ab6a
mov edx, ecx
and edx, 1
xor edx, ecx
not edx
test edx, edx
je 0x58ab6a
xor esi, esi
mov dword [esp + 0xcc], 0x70000013
jmp 0x58a5fe
mov cl, 0xf
movzx ecx, cl
cmp ecx, 0x15
jne 0x58ab99
mov cl, 0x46
mov ebx, dword [eax + 0x10]
cmp ebx, 0x11
jb 0x58abe1
mov dl, 0xd
mov edi, ebx
not edi
and edi, 1
add edi, ebx
jne 0x58aba3
jmp 0x58abe1
mov dword [esp + 0xcc], eax
jmp 0x58a5bd
mov cl, 0x46
mov dl, 0xd
cmp dword [eax + 0x10], 0x10
jbe 0x58abe1
movzx eax, dl
cmp eax, 0x10
jne 0x58ac0c
xor esi, esi
jmp 0x58abc9
mov eax, esi
imul eax, eax
and eax, 3
cmp eax, 2
adc esi, 0
mov dword [esp], str.License_Manager_needs_upgrade__v2c_version_too_new_n
call fcn.004414c0
mov eax, esi
or eax, 2
mov ecx, esi
xor ecx, 2
add ecx, eax
setne al
movzx eax, al
cmp esi, eax
jb 0x58abaf
jmp 0x58ac18
movzx ecx, cl
cmp ecx, 0x46
je 0x58ac33
cmp ecx, 0x49
jne 0x58ac40
mov edx, dword [eax + 8]
cmp edx, 6
jne 0x58ad13
mov cl, 0xd
imul edx, edx
and edx, 3
cmp edx, 2
jb 0x58ac5e
jmp 0x58ad13
mov dword [esp], str.License_Manager_needs_upgrade__v2c_version_too_new_n
call fcn.004414c0
mov dword [esp + 0xc8], 0
mov dword [esp + 0xcc], 0x7000002a
jmp 0x58a5bd
mov cl, 0xd
cmp dword [eax + 8], 6
je 0x58ac5e
jmp 0x58ad13
mov edx, dword [eax + 8]
cmp edx, 6
jne 0x58ad13
mov cl, 0xd
mov edi, edx
or edi, 2
xor edx, 2
add edx, edi
je 0x58ad13
movzx ecx, cl
cmp ecx, 0xd
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [esp + 0xc8], 0
mov edx, ecx
add edx, 1
mov edi, eax
adc edi, 0
cmp edx, 2
sbb edi, 0
jb 0x58accf
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.0041f570
mov edi, eax
mov dword [esp + 0xc8], 0
test edi, edi
je 0x58accf
mov eax, edi
and eax, 1
inc eax
xor eax, edi
je 0x58accf
mov dword [esp], edi
call fcn.0040b670
mov dword [esp + 0xcc], 0x70000010
test eax, eax
mov dword [esp + 0xc8], edi
jne 0x58a5bd
mov eax, dword [esp + 0x118]
mov ecx, dword [eax + 0xc]
xor ebx, ebx
cmp dword [ecx + 0x14], 0
jne 0x58ae1b
mov dl, 0x36
movzx edx, dl
cmp edx, 0x4b
jne 0x58ad3a
mov edi, dword [ecx + 0x18]
test edi, edi
jne 0x58ae1b
mov byte [esp + 0xcc], 0x2d
mov edx, edi
or edx, 2
xor edi, 2
add edi, edx
jne 0x58ad57
jmp 0x58ae1b
mov dword [esp], str.Not_a_cert_type_of_license_n
call fcn.004414c0
mov dword [esp + 0xc8], 0
mov dword [esp + 0xcc], 0x70000011
jmp 0x58a5bd
mov byte [esp + 0xcc], 0x2d
mov edx, dword [ecx + 0x18]
test edx, edx
je 0x58ad57
mov edi, edx
and edi, 1
inc edi
xor edi, edx
jne 0x58ae1b
movzx edx, byte [esp + 0xcc]
cmp edx, 0x2d
je 0x58ae41
cmp edx, 0x72
jne 0x58aefe
mov ecx, dword [ecx + 0x1c]
mov edx, ecx
not edx
and edx, 1
add edx, ecx
sete dl
test ecx, ecx
movzx ecx, dl
lea ecx, [ecx*4 + 4]
mov edx, 8
cmove edx, ecx
mov ecx, dword [esp + 0x10c]
mov edi, dword [esp + 0x110]
mov ebx, dword [esp + 0x114]
mov dword [esp + 0xcc], ebx
lea ebx, [esp + 0x100]
mov dword [esp + 0x30], ebx
mov ebx, dword [ebp + 0x1c]
mov dword [esp + 0x2c], ebx
mov ebx, dword [ebp + 0x24]
mov dword [esp + 0x20], ebx
mov ebx, dword [ebp + 0x14]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x18], esi
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xcc]
mov dword [esp + 8], eax
mov eax, dword [esp + 0xc8]
mov dword [esp], eax
mov dword [esp + 0x24], edx
jmp 0x58af73
mov eax, ebx
not eax
and eax, 1
add eax, ebx
setne al
movzx eax, al
add ebx, eax
mov dword [esp], str.This_is_a_commuter_v2c._It_cannot_be_loaded_from_the_license_storage_n
call fcn.004414c0
mov eax, ebx
or eax, 2
mov ecx, ebx
xor ecx, 2
add ecx, eax
setne al
movzx eax, al
cmp ebx, eax
jb 0x58adfe
mov dword [esp + 0xcc], 0x70000010
jmp 0x58a5bd
mov ecx, dword [ecx + 0x1c]
mov edx, ecx
or edx, 2
mov edi, ecx
xor edi, 2
add edi, edx
sete dl
test ecx, ecx
movzx ecx, dl
lea ecx, [ecx*4 + 4]
mov edx, 8
cmove edx, ecx
mov ecx, dword [esp + 0x10c]
mov edi, dword [esp + 0x110]
mov ebx, dword [esp + 0x114]
mov dword [esp + 0xcc], ebx
lea ebx, [esp + 0x100]
mov dword [esp + 0x30], ebx
mov ebx, dword [ebp + 0x1c]
mov dword [esp + 0x2c], ebx
mov ebx, dword [ebp + 0x24]
mov dword [esp + 0x20], ebx
mov ebx, dword [ebp + 0x14]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x18], esi
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xcc]
mov dword [esp + 8], eax
mov eax, dword [esp + 0xc8]
mov dword [esp], eax
mov dword [esp + 0x24], edx
mov dword [esp + 4], 0x27
call fcn.0053aa50
mov dword [esp + 0xcc], eax
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete cl
movzx ecx, cl
cmp eax, ecx
je 0x58af8b
jmp 0x58afca
mov edx, 4
cmp dword [ecx + 0x1c], 0
je 0x58af0e
mov edx, 8
mov ecx, dword [esp + 0x10c]
mov edi, dword [esp + 0x110]
mov ebx, dword [esp + 0x114]
mov dword [esp + 0xcc], ebx
lea ebx, [esp + 0x100]
mov dword [esp + 0x30], ebx
mov ebx, dword [ebp + 0x1c]
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x24], edx
mov edx, dword [ebp + 0x24]
mov dword [esp + 0x20], edx
mov edx, dword [ebp + 0x14]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x18], esi
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xcc]
mov dword [esp + 8], eax
mov eax, dword [esp + 0xc8]
mov dword [esp], eax
mov dword [esp + 4], 0x27
call fcn.0053aa50
mov dword [esp + 0xcc], eax
test eax, eax
jne 0x58afca
mov eax, dword [esp + 0x118]
mov ecx, dword [eax + 0x14]
mov dword [esp + 0xcc], 0
test ecx, ecx
je 0x58b15f
mov edx, ecx
imul edx, edx
and edx, 3
cmp edx, 3
je 0x58b16b
cmp dword [ecx], 0
je 0x58b122
mov dl, 0x23
xor esi, esi
xor edi, edi
jmp 0x58b00b
mov eax, dword [esp + 0xcc]
and eax, 0xfffffff
cmp eax, 0x41
je 0x58afe5
mov al, 1
test al, al
jne 0x58a5bd
mov eax, dword [ebp + 0x24]
mov dword [esp + 4], eax
mov dword [esp], str.Duplicate_v2c_update_file__s_already_added_n
call fcn.004414c0
jmp 0x58a5bd
mov dl, 0x23
jmp 0x58b0ff
mov dl, 0x23
jmp 0x58b0ff
movzx edx, dl
cmp edx, 0x23
je 0x58b067
cmp edx, 0x7e
jne 0x58b09d
mov byte [esp + 0xc4], 0x7e
mov ecx, dword [ecx + 4]
lea edx, [edi + edi*2]
mov dword [esp + 0xcc], edi
mov edi, dword [ecx + edx*4]
mov ebx, edi
imul ebx, ebx
and ebx, 3
cmp ebx, 2
sete bl
movzx ebx, bl
cmp edi, ebx
cmovne esi, edi
mov edi, dword [ecx + edx*4 + 8]
test edi, edi
jne 0x58b0d0
mov ecx, edi
or ecx, 2
mov edx, edi
xor edx, 2
add edx, ecx
je 0x58b0d0
mov dl, 0x7e
jmp 0x58b0ff
mov byte [esp + 0xc4], 0x79
mov ecx, dword [ecx + 4]
lea edx, [edi + edi*2]
mov dword [esp + 0xcc], edi
mov edi, dword [ecx + edx*4]
test edi, edi
cmovne esi, edi
mov edi, dword [ecx + edx*4 + 8]
test edi, edi
jne 0x58b0d0
mov ecx, edi
imul ecx, ecx
and ecx, 3
cmp ecx, 2
jae 0x58b0d0
mov dl, 0x79
jmp 0x58b0ff
mov byte [esp + 0xc4], 0x23
mov ecx, dword [ecx + 4]
lea edx, [edi + edi*2]
mov dword [esp + 0xcc], edi
mov edi, dword [ecx + edx*4]
test edi, edi
cmovne esi, edi
mov edi, dword [ecx + edx*4 + 8]
test edi, edi
je 0x58b004
xor ecx, ecx
test cl, cl
jne 0x58affd
xor ebx, ebx
jmp 0x58b0e8
inc ebx
mov dword [esp + 4], edi
mov dword [esp], esi
call fcn.0043cb40
mov eax, dword [esp + 0x118]
mov ecx, ebx
and ecx, 1
inc ecx
xor ecx, ebx
test ebx, ebx
je 0x58b0d4
test ecx, ecx
je 0x58b0d4
mov dl, byte [esp + 0xc4]
mov ecx, 3
mov edi, dword [esp + 0xcc]
sub ecx, edi
xor ecx, edi
setne cl
movzx ecx, cl
add edi, ecx
mov ecx, dword [eax + 0x14]
cmp edi, dword [ecx]
jb 0x58b00b
mov dl, 0x3f
movzx edx, dl
cmp edx, 0x3f
jne 0x58b177
mov byte [esp + 0xc3], 0xe
mov byte [esp + 0xcc], 0x48
mov byte [esp + 0xc4], 0x12
mov edx, dword [ecx + 0x10]
xor esi, esi
test edx, edx
jne 0x58b19b
mov edi, edx
or edi, 2
xor edx, 2
add edx, edi
jne 0x58b35a
jmp 0x58b19b
mov esi, dword [esp + 0xc8]
jmp 0x58a5fe
mov esi, dword [esp + 0xc8]
jmp 0x58a5fe
cmp dword [ecx + 0x10], 0
je 0x58b35a
mov byte [esp + 0xc3], 0xe
mov byte [esp + 0xcc], 0x48
mov byte [esp + 0xc4], 0x12
xor esi, esi
movzx edx, byte [esp + 0xc4]
cmp edx, 0x12
je 0x58b1ca
cmp edx, 0x1a
jne 0x58b1f1
mov byte [esp + 0xc4], 0x42
mov ecx, dword [ecx + 0x14]
mov edx, esi
shl edx, 4
mov edi, dword [ecx + edx + 0xc]
test edi, edi
jne 0x58b21b
jmp 0x58b2bd
mov byte [esp + 0xc4], 0x12
mov ecx, dword [ecx + 0x14]
mov edx, esi
shl edx, 4
mov edi, dword [ecx + edx + 0xc]
test edi, edi
je 0x58b2bd
xor ecx, ecx
test cl, cl
je 0x58b21b
jmp 0x58b2bd
mov byte [esp + 0xc4], 0x1a
mov ecx, dword [ecx + 0x14]
mov edx, esi
shl edx, 4
mov edi, dword [ecx + edx + 0xc]
test edi, edi
jne 0x58b21b
mov ecx, edi
or ecx, 2
mov edx, edi
xor edx, 2
add edx, ecx
jne 0x58b2bd
movzx eax, byte [esp + 0xcc]
cmp eax, 0x12
jne 0x58b280
xor ebx, ebx
jmp 0x58b26a
mov byte [esp + 0xcc], 0x12
inc ebx
mov eax, dword [esp + 0x100]
mov ecx, dword [esp + 0x104]
mov dword [esp + 0x10], edi
mov dword [esp + 4], ecx
mov dword [esp], eax
mov dword [esp + 0xc], 0xffffffff
mov dword [esp + 8], 0xffffffff
call fcn.0043e5f0
mov eax, dword [esp + 0x118]
mov ecx, ebx
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sbb ecx, ecx
and ecx, 1
cmp ebx, ecx
jb 0x58b22c
jmp 0x58b2bd
mov byte [esp + 0xcc], 0x48
mov eax, dword [esp + 0x100]
mov ecx, dword [esp + 0x104]
mov dword [esp + 0x10], edi
mov dword [esp + 4], ecx
mov dword [esp], eax
mov dword [esp + 0xc], 0xffffffff
mov dword [esp + 8], 0xffffffff
call fcn.0043e5f0
mov eax, dword [esp + 0x118]
movzx ecx, byte [esp + 0xc3]
cmp ecx, 0xe
je 0x58b2f0
cmp ecx, 0x38
jne 0x58b328
mov byte [esp + 0xc3], 0x13
inc esi
mov ecx, dword [eax + 0x14]
cmp esi, dword [ecx + 0x10]
jb 0x58b19b
xor edx, edx
test dl, dl
jne 0x58b19b
jmp 0x58b35a
mov ecx, esi
or ecx, 2
mov edx, esi
xor edx, 2
add edx, ecx
setne cl
movzx ecx, cl
add esi, ecx
mov ecx, dword [eax + 0x14]
cmp esi, dword [ecx + 0x10]
jae 0x58b35a
mov byte [esp + 0xc3], 0xe
mov edx, esi
or edx, 2
mov edi, esi
xor edi, 2
add edi, edx
jne 0x58b19b
jmp 0x58b35a
mov ecx, 3
sub ecx, esi
xor ecx, esi
setne cl
movzx ecx, cl
add esi, ecx
mov ecx, dword [eax + 0x14]
cmp esi, dword [ecx + 0x10]
jae 0x58b35a
mov byte [esp + 0xc3], 0x38
mov edx, esi
and edx, 1
xor edx, esi
not edx
test edx, edx
jne 0x58b19b
mov edx, dword [ecx + 8]
mov edi, edx
and edi, 1
inc edi
xor edi, edx
sete bl
movzx edi, bl
cmp edx, edi
je 0x58b4d9
mov bl, 0x7f
mov byte [esp + 0xc4], 0x77
xor edx, edx
mov dword [esp + 0xbc], edx
mov byte [esp + 0xc3], bl
mov esi, dword [ecx + 0xc]
lea ecx, [edx + edx*2]
mov dword [esp + 0xcc], ecx
mov edi, dword [esi + ecx*4 + 8]
test edi, edi
je 0x58b46d
mov ecx, edi
imul ecx, ecx
and ecx, 3
cmp ecx, 2
je 0x58b46d
movzx eax, byte [esp + 0xc4]
xor ebx, ebx
cmp eax, 0x77
je 0x58b45c
mov byte [esp + 0xc4], 0x78
mov eax, dword [esp + 0xcc]
mov eax, dword [esi + eax*4]
mov ecx, dword [esp + 0x100]
mov edx, dword [esp + 0x104]
mov dword [esp + 0x10], edi
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov dword [esp], ecx
mov dword [esp + 0xc], 0xffffffff
call fcn.0043e5f0
mov eax, dword [esp + 0x118]
jmp 0x58b46d
mov byte [esp + 0xc4], 0x77
xor ecx, ebx
setne al
movzx eax, al
add ebx, eax
mov eax, dword [esp + 0xcc]
mov eax, dword [esi + eax*4]
mov ecx, dword [esp + 0x100]
mov edx, dword [esp + 0x104]
mov dword [esp + 0x10], edi
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov dword [esp], ecx
mov dword [esp + 0xc], 0xffffffff
call fcn.0043e5f0
mov eax, dword [esp + 0x118]
test ebx, ebx
jne 0x58b46d
mov ecx, 3
sub ecx, ebx
mov edx, ebx
xor edx, ecx
jne 0x58b40f
movzx ecx, byte [esp + 0xc3]
cmp ecx, 0x1b
jne 0x58b4a2
mov ecx, 3
mov edx, dword [esp + 0xbc]
sub ecx, edx
xor ecx, edx
setne cl
movzx ecx, cl
add edx, ecx
mov ecx, dword [eax + 0x14]
cmp edx, dword [ecx + 8]
mov bl, 0x7f
jb 0x58b37f
jmp 0x58b4d9
mov esi, dword [esp + 0xbc]
mov ecx, esi
and ecx, 1
xor ecx, esi
cmp ecx, 0xffffffff
setne cl
movzx ecx, cl
add esi, ecx
mov ecx, dword [eax + 0x14]
cmp esi, dword [ecx + 8]
jae 0x58b4d9
mov bl, 0x1b
mov edx, esi
or edx, 2
mov edi, esi
xor edi, 2
add edi, edx
mov edx, esi
jne 0x58b37f
mov dl, 0x34
movzx edx, dl
cmp edx, 4
je 0x58b509
cmp edx, 0x34
jne 0x58b529
mov byte [esp + 0xc4], 0x23
mov edx, dword [ecx + 0x18]
mov edi, edx
and edi, 1
inc edi
xor edi, edx
sete bl
movzx edi, bl
xor ebx, ebx
cmp edx, edi
je 0x58b519
jmp 0x58b549
mov byte [esp + 0xc4], 0x23
xor ebx, ebx
cmp dword [ecx + 0x18], 0
jne 0x58b549
mov dword [esp + 0xcc], 0
jmp 0x58a5bd
mov byte [esp + 0xc4], 0x23
xor ebx, ebx
cmp dword [ecx + 0x18], 0
jne 0x58b549
mov dword [esp + 0xcc], 0
jmp 0x58a5bd
mov edx, dword [ecx + 0x1c]
lea edi, [ebx + ebx*2]
mov ecx, dword [edx + edi*4 + 8]
test ecx, ecx
je 0x58b58b
mov eax, dword [edx + edi*4]
mov edx, dword [esp + 0x100]
mov edi, dword [esp + 0x104]
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], eax
mov dword [esp + 4], edi
mov dword [esp], edx
mov dword [esp + 8], 0xffffffff
call fcn.0043e5f0
mov eax, dword [esp + 0x118]
movzx ecx, byte [esp + 0xc4]
cmp ecx, 0x3d
je 0x58b5b5
cmp ecx, 0x70
jne 0x58b5f8
mov byte [esp + 0xc4], 0x70
mov ecx, ebx
imul ecx, ecx
and ecx, 3
cmp ecx, 2
adc ebx, 0
jmp 0x58b5ce
mov byte [esp + 0xc4], 0x3d
mov ecx, 3
sub ecx, ebx
xor ecx, ebx
setne cl
movzx ecx, cl
add ebx, ecx
mov ecx, dword [eax + 0x14]
cmp ebx, dword [ecx + 0x18]
jb 0x58b549
mov edx, ebx
and edx, 1
inc edx
mov dword [esp + 0xcc], 0
xor edx, ebx
je 0x58b549
jmp 0x58a5bd
inc ebx
mov ecx, dword [eax + 0x14]
mov dword [esp + 0xcc], 0
cmp ebx, dword [ecx + 0x18]
jae 0x58a5bd
mov byte [esp + 0xc4], 0x23
mov edx, ebx
imul edx, edx
and edx, 3
cmp edx, 2
jb 0x58b549
jmp 0x58a5bd
mov dword [esp + 0x58], ecx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x54], esi
mov dword [esp + 0x50], eax
mov dword [esp + 0x64], edx
mov eax, 0x13
mov edx, 0xc
movzx ecx, byte [esp + 0x77]
cmp ecx, 0x51
mov esi, dword [esp + 0xa4]
lea ebx, [esp + 0x11c]
je 0x58b9d3
cmp eax, 9
jne 0x58b6b3
imul eax, eax
and eax, 3
cmp eax, 2
jae 0x58b6b3
mov byte [esp + 0x9b], 0xe
mov byte [esp + 0x87], 0x41
mov dl, 0x65
mov eax, dword [ebp + 0x1c]
mov ecx, eax
and eax, 1
inc eax
xor eax, ecx
sete al
movzx eax, al
cmp ecx, eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x8c], eax
je 0x58c796
jmp 0x58b716
mov byte [esp + 0x77], 0x34
mov dword [esp], ebx
mov dword [esp + 8], 0x400
mov dword [esp + 4], 0
call fcn.007c51a0
mov dword [esp + 8], ebx
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov dword [esp + 0xc], 0x400
call fcn.0043e1a0
mov edx, 0xf
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete cl
movzx ecx, cl
cmp eax, ecx
mov eax, 0xd
je 0x58c0c8
jmp 0x58c60c
movzx eax, dl
cmp eax, 0x67
jne 0x58b722
mov dl, 0x65
jmp 0x58b724
mov dl, 0x67
mov byte [esp + 0x47], 0x42
lea eax, [edi + 0x1c]
mov dword [esp + 0x80], eax
lea eax, [edi + 0x18]
mov dword [esp + 0x6c], eax
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 0
jmp 0x58bc4e
cmp ecx, 0xf
je 0x58b767
mov eax, ecx
and eax, 1
inc eax
xor eax, ecx
je 0x58b767
lea ebx, [esp + 0x11c]
jmp 0x58b78b
mov byte [esp + 0x7f], 0x6c
mov eax, dword [edi + 0xc]
test eax, eax
jne 0x58ca3b
mov ecx, 3
sub ecx, eax
xor ecx, eax
jne 0x58c5e3
jmp 0x58ca3b
mov dword [esp + 0xa4], esi
mov dword [esp + 0xa8], edi
mov dword [esp], ebx
mov esi, ebx
call fcn.004938e0
mov edi, dword [esp + 0x70]
mov ecx, dword [edi]
mov dword [ecx + 8], eax
mov eax, dword [edi]
mov eax, dword [eax + 8]
xor ebx, ebx
test eax, eax
jne 0x58b821
mov ecx, eax
not ecx
and ecx, 1
add ecx, eax
je 0x58b821
mov edi, dword [esp + 0xa8]
mov esi, dword [esp + 0xa4]
jmp 0x58c982
mov eax, ebx
imul eax, eax
and eax, 3
cmp eax, 2
adc ebx, 0
mov dword [esp], esi
call fcn.007c3e70
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
adc eax, 0
mov ecx, dword [edi]
mov dword [ecx + 4], eax
mov eax, dword [edi]
mov ecx, dword [esp + 0xcc]
mov dword [eax], ecx
mov eax, dword [esp + 0xa8]
mov dword [eax], 1
mov eax, ebx
and eax, 1
inc eax
xor eax, ebx
test ebx, ebx
je 0x58b7e0
test eax, eax
je 0x58b7e0
mov edi, dword [esp + 0xa8]
mov edx, dword [esp + 0x64]
mov eax, dword [esp + 0x50]
mov esi, dword [esp + 0x54]
mov ebx, dword [esp + 0x68]
mov ecx, dword [esp + 0x58]
jmp 0x58b62e
mov dword [esp + 4], 0x10
mov dword [esp], 1
call fcn.00493840
mov dword [edi + 0x14], eax
xor ebx, ebx
test eax, eax
je 0x58c982
xor eax, eax
test al, al
mov dl, byte [esp + 0xa3]
jne 0x58c982
mov eax, 0x1b
lea ecx, [edi + 0x14]
mov dword [esp + 0x60], ecx
cmp eax, 0xe
je 0x58b958
xor ebx, ebx
test bl, bl
jne 0x58b958
mov dword [esp + 0xa4], esi
mov byte [esp + 0xa3], dl
lea esi, [esp + 0x11c]
mov dword [esp], esi
call fcn.004938e0
mov edx, dword [esp + 0x60]
mov ecx, dword [edx]
mov dword [ecx + 0xc], eax
mov eax, dword [edx]
cmp dword [eax + 0xc], 0
je 0x58ba2b
mov ebx, 1
mov dword [esp], esi
mov esi, edx
call fcn.007c3e70
inc eax
mov ecx, dword [esi]
mov dword [ecx + 8], eax
mov eax, dword [esi]
mov ecx, dword [ebp + 0xc]
mov dword [eax + 4], ecx
mov ecx, dword [ebp + 8]
mov dword [eax], ecx
mov dword [edi + 0x10], 1
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x8c], eax
mov edx, dword [esp + 0x68]
mov eax, dword [esp + 0x58]
mov esi, dword [esp + 0xa4]
mov dword [esp + 0x4c], eax
mov eax, ebx
not eax
and eax, 1
add eax, ebx
setne al
movzx eax, al
mov ecx, ebx
xor ebx, ebx
cmp ecx, eax
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x9c], eax
mov dword [esp + 0x68], edx
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x58], eax
je 0x58ba37
jmp 0x58c982
mov ecx, 0x19
mov byte [esp + 0x87], 0x41
mov byte [esp + 0xac], 0x72
mov al, 0xf
cmp dword [edi + 4], 0
mov bl, byte [esp + 0x9b]
je 0x58c858
mov byte [esp + 0x9b], bl
mov byte [esp + 0xa3], dl
cmp ecx, 0xd
je 0x58b9a1
mov eax, ecx
and eax, 1
inc eax
xor eax, ecx
jne 0x58ca3b
mov dword [esp + 4], 0xc
mov dword [esp], 1
call fcn.00493840
mov edx, 9
lea ecx, [edi + 4]
mov dword [esp + 0x70], ecx
mov dword [edi + 4], eax
test eax, eax
lea ebx, [esp + 0x11c]
jne 0x58b78b
mov eax, ebx
xor ebx, ebx
cmp edx, 9
je 0x58c982
mov byte [esp + 0x77], 0x51
mov ebx, esi
mov esi, eax
mov dword [esp], esi
mov dword [esp + 8], 0x400
mov dword [esp + 4], 0
call fcn.007c51a0
mov dword [esp + 8], esi
mov esi, ebx
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov dword [esp + 0xc], 0x400
call fcn.0043e1a0
test eax, eax
jne 0x58b851
jmp 0x58ba37
mov esi, dword [esp + 0xa4]
jmp 0x58c982
mov byte [esp + 0x9b], 0x23
mov eax, dword [ebp + 0x14]
mov ecx, eax
imul eax, eax
and eax, 3
cmp eax, 3
sete al
movzx eax, al
cmp ecx, eax
jne 0x58ba78
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x8c], eax
mov dl, byte [esp + 0xc3]
mov ebx, dword [esp + 0x88]
jmp 0x58bb17
mov dword [esp + 0xa4], esi
xor eax, eax
lea ecx, [edi + 0xc]
lea edx, [edi + 8]
mov bh, byte [esp + 0x9a]
jmp 0x58badb
mov bh, 0x58
mov byte [esp + 0xb3], 0x5b
mov byte [esp + 0xc3], 0x23
mov esi, eax
imul esi, esi
and esi, 3
cmp esi, 2
adc eax, 0
mov dword [esp + 0xc4], 0
mov dword [esp + 0xb8], 0
mov dword [esp + 0xc8], ecx
mov dword [esp + 0xb4], ecx
mov dword [esp + 0xbc], edx
mov esi, eax
and esi, 1
xor esi, eax
cmp esi, 0xffffffff
setne bl
movzx esi, bl
cmp eax, esi
jb 0x58ba90
mov byte [esp + 0x9a], bh
mov eax, dword [esp + 0xc4]
mov dword [esp + 0x8c], eax
mov dl, byte [esp + 0xc3]
mov esi, dword [esp + 0xa4]
jmp 0x58c37a
mov eax, 0x12
mov cl, byte [esp + 0x9b]
movzx ecx, cl
cmp ecx, 0xe
je 0x58bb81
mov dword [esp + 0x88], ebx
mov byte [esp + 0xc3], dl
mov eax, 9
cmp ecx, 0x5b
jne 0x58bc34
mov byte [esp + 0x9b], 0x5b
mov byte [esp + 0x87], 0x41
mov dl, 0x65
mov eax, dword [ebp + 0x1c]
mov ecx, eax
imul eax, eax
and eax, 3
cmp eax, 2
sete al
movzx eax, al
cmp ecx, eax
lea ebx, [esp + 0x11c]
jne 0x58b716
jmp 0x58c796
mov dword [esp + 0x88], ebx
mov byte [esp + 0xc3], dl
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x9c], ecx
cmp eax, 0xa
jne 0x58bc05
mov ecx, eax
not ecx
and ecx, 1
add ecx, eax
je 0x58bc05
mov eax, dword [esp + 0x50]
mov ebx, dword [esp + 0x80]
mov dword [ebx], eax
lea eax, [esp + 0x11c]
mov dword [esp], eax
call fcn.004938e0
mov ecx, dword [ebx]
mov edx, dword [esp + 0x68]
lea edx, [edx*4]
lea edx, [edx + edx*2]
mov dword [ecx + edx + 8], eax
mov eax, dword [ebx]
mov eax, dword [eax + edx + 8]
xor ebx, ebx
test eax, eax
je 0x58c982
mov byte [esp + 0x47], 0x1a
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
jne 0x58c4fe
jmp 0x58c982
mov bl, 0x23
mov byte [esp + 0x87], 0x41
mov dl, 0x65
mov eax, dword [ebp + 0x1c]
mov ecx, eax
and eax, 1
inc eax
xor eax, ecx
sete al
movzx eax, al
cmp ecx, eax
mov ecx, 0xe
je 0x58c75b
jmp 0x58c029
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x9c], ecx
lea ebx, [esp + 0x11c]
jmp 0x58b668
mov dword [esp + 0xa4], esi
mov byte [esp + 0xa3], dl
mov esi, dword [ebp + 0x18]
mov dword [esp], ebx
mov dword [esp + 8], 0x400
mov dword [esp + 4], 0
call fcn.007c51a0
mov ecx, ebx
mov edx, dword [esp + 0x4c]
lea ebx, [esi + edx*4]
mov eax, dword [esi + edx*4]
mov esi, edx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xcc]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov dword [esp + 0x18], 0x400
mov dword [esp + 0xc], 0xffffffff
call fcn.0043ae40
test eax, eax
jne 0x58bce1
mov dword [esp + 0x54], ebx
mov eax, dword [esp + 0x48]
mov dword [esp + 0x68], eax
mov ebx, esi
mov esi, dword [ebp + 0x1c]
mov edx, esi
mov ecx, dword [esp + 0x64]
mov esi, dword [esp + 0xa4]
jmp 0x58c567
mov dword [esp + 0x54], ebx
mov ecx, dword [esp + 0x48]
mov eax, ecx
and eax, 1
xor eax, ecx
cmp eax, 0xffffffff
setne al
movzx eax, al
add eax, ecx
mov dword [esp + 0x64], eax
lea eax, [eax*4]
lea eax, [eax + eax*2]
mov esi, dword [esp + 0x80]
mov ecx, dword [esi]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00492a60
test eax, eax
jne 0x58bd3d
mov ecx, eax
and ecx, 1
xor ecx, eax
not ecx
xor ebx, ebx
test ecx, ecx
je 0x58bd3d
mov esi, dword [esp + 0xa4]
jmp 0x58c982
movzx ecx, byte [esp + 0x47]
cmp ecx, 6
je 0x58bd96
mov dword [esp + 0x50], eax
mov eax, 4
cmp ecx, 0x2f
je 0x58be0c
mov eax, 0xa
mov edx, 0xd
cmp ecx, 0x42
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x68], ecx
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x9c], ecx
mov esi, dword [esp + 0xa4]
jne 0x58c43e
jmp 0x58bb9d
mov byte [esp + 0x47], 6
mov dword [esi], eax
mov dword [esp + 0x50], eax
lea eax, [esp + 0x11c]
mov dword [esp], eax
call fcn.004938e0
mov ecx, dword [esi]
mov ebx, dword [esp + 0x48]
lea edx, [ebx*4]
lea edx, [edx + edx*2]
mov dword [ecx + edx + 8], eax
mov eax, dword [esi]
mov eax, dword [eax + edx + 8]
test eax, eax
jne 0x58be36
mov ecx, eax
and ecx, 1
xor ecx, eax
not ecx
test ecx, ecx
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x9c], eax
mov dword [esp + 0x68], ebx
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x58], eax
mov esi, dword [esp + 0xa4]
mov edx, ebx
mov ebx, 0x10
jne 0x58b91a
jmp 0x58c4fe
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x9c], ecx
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x68], ecx
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x58], ecx
mov esi, dword [esp + 0xa4]
jmp 0x58caad
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x9c], eax
mov dword [esp + 0x68], ebx
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x58], eax
mov esi, dword [esp + 0xa4]
jmp 0x58c4fe
mov byte [esp + 0xc3], 0x57
lea eax, [esp + 0x11c]
mov esi, eax
mov dword [esp], esi
mov dword [esp + 8], 0x400
mov dword [esp + 4], 0
call fcn.007c51a0
mov eax, dword [ebp + 0x10]
mov ebx, dword [esp + 0xb8]
lea ecx, [eax + ebx*4]
mov dword [esp + 0x94], ecx
mov eax, dword [eax + ebx*4]
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xcc]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov dword [esp + 0x14], 0x400
call fcn.0043bb90
mov edx, 0x1d
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete cl
movzx ecx, cl
cmp eax, ecx
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x9c], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x88], ebx
mov esi, dword [esp + 0xa4]
je 0x58c645
mov dword [esp + 0xa4], esi
mov eax, dword [esp + 0x78]
mov ecx, eax
imul eax, eax
and eax, 3
cmp eax, 2
mov esi, ecx
adc esi, 0
lea eax, [esi*4]
lea eax, [eax + eax*2]
mov ecx, dword [esp + 0xb4]
mov ecx, dword [ecx]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00492a60
mov ecx, eax
xor ebx, ebx
test ecx, ecx
je 0x58bfe5
mov eax, ecx
imul eax, eax
and eax, 3
cmp eax, 2
mov al, byte [esp + 0xb3]
je 0x58bff1
mov dword [esp + 0x90], esi
movzx eax, al
cmp eax, 0x70
jne 0x58bffd
mov byte [esp + 0xb3], 0x5b
mov eax, dword [esp + 0xb4]
mov dword [eax], ecx
mov dword [esp + 0x5c], ecx
lea eax, [esp + 0x11c]
mov dword [esp], eax
call fcn.004938e0
mov esi, dword [esp + 0xc8]
mov ecx, dword [esi]
mov edx, dword [esp + 0x78]
lea edx, [edx*4]
lea edx, [edx + edx*2]
mov dword [ecx + edx + 8], eax
mov eax, dword [esi]
mov ecx, dword [eax + edx + 8]
test ecx, ecx
jne 0x58c0d8
mov eax, 0x11
imul ecx, ecx
and ecx, 3
cmp ecx, 2
mov esi, dword [esp + 0xa4]
jb 0x58c88f
jmp 0x58c0df
mov esi, dword [esp + 0xa4]
jmp 0x58c982
mov esi, dword [esp + 0xa4]
jmp 0x58c982
mov dword [esp + 0x5c], ecx
mov eax, dword [esp + 0x8c]
mov dword [esp + 0xc4], eax
mov dl, byte [esp + 0xa3]
mov esi, dword [esp + 0xa4]
mov ecx, 1
mov bl, byte [esp + 0x9b]
mov byte [esp + 0x9b], bl
cmp ecx, 1
mov eax, ecx
jne 0x58c0a7
imul eax, eax
and eax, 3
cmp eax, 2
jae 0x58c0a7
mov ebx, esi
mov byte [esp + 0xa3], dl
mov byte [esp + 0xb3], 0x70
mov eax, dword [esp + 0xb4]
mov ecx, dword [esp + 0x5c]
mov dword [eax], ecx
lea eax, [esp + 0x11c]
mov dword [esp], eax
call fcn.004938e0
mov esi, dword [esp + 0xc8]
mov ecx, dword [esi]
mov edx, dword [esp + 0x78]
lea edx, [edx*4]
lea edx, [edx + edx*2]
mov dword [ecx + edx + 8], eax
mov eax, dword [esi]
mov eax, dword [eax + edx + 8]
test eax, eax
je 0x58c0c1
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
mov esi, ebx
mov eax, 0xe
jne 0x58c0df
jmp 0x58c0c8
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x8c], eax
lea ebx, [esp + 0x11c]
jmp 0x58b716
mov esi, ebx
mov eax, 0xe
xor ebx, ebx
cmp eax, 0xd
je 0x58ba37
jmp 0x58c982
mov esi, dword [esp + 0xa4]
xor ebx, ebx
movzx eax, byte [esp + 0x9a]
cmp eax, 0x2a
mov ecx, dword [esp + 0x78]
je 0x58c17b
cmp eax, 0x2f
je 0x58c205
mov dword [esp + 0xa4], esi
cmp eax, 0x73
jne 0x58c285
mov byte [esp + 0x9a], 0x58
lea ebx, [esp + 0x11c]
mov dword [esp], ebx
mov ebx, ecx
call fcn.007c3e70
mov ecx, eax
and ecx, 1
xor ecx, eax
cmp ecx, 0xffffffff
setne cl
movzx ecx, cl
add ecx, eax
mov esi, dword [esp + 0xc8]
mov eax, dword [esi]
lea edx, [ebx*4]
lea edx, [edx + edx*2]
mov dword [eax + edx + 4], ecx
mov eax, dword [esp + 0x94]
mov eax, dword [eax]
mov ecx, dword [esi]
mov dword [ecx + edx], eax
mov eax, dword [esp + 0xbc]
mov ecx, dword [esp + 0x90]
mov dword [eax], ecx
mov dword [esp + 0x8c], ecx
jmp 0x58c314
mov dword [esp + 0xa4], esi
lea eax, [ecx*4]
lea esi, [eax + eax*2]
jmp 0x58c1e8
mov byte [esp + 0x9a], 0x2f
add eax, ecx
setne al
movzx eax, al
add ebx, eax
lea eax, [esp + 0x11c]
mov dword [esp], eax
call fcn.007c3e70
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
adc eax, 0
mov edx, dword [esp + 0xc8]
mov ecx, dword [edx]
mov dword [ecx + esi + 4], eax
mov eax, dword [esp + 0x94]
mov eax, dword [eax]
mov ecx, dword [edx]
mov dword [ecx + esi], eax
mov eax, dword [esp + 0xbc]
mov ecx, dword [esp + 0x90]
mov dword [eax], ecx
mov eax, ebx
or eax, 2
mov ecx, ebx
xor ecx, 2
mov edx, eax
add edx, ecx
setne dl
movzx edx, dl
cmp ebx, edx
jb 0x58c18e
jmp 0x58c306
mov dword [esp + 0xa4], esi
lea eax, [ecx*4]
lea esi, [eax + eax*2]
jmp 0x58c26c
mov byte [esp + 0x9a], 0x73
mov eax, ebx
not eax
and eax, 1
add eax, ebx
setne al
movzx eax, al
add ebx, eax
lea eax, [esp + 0x11c]
mov dword [esp], eax
call fcn.007c3e70
inc eax
mov edx, dword [esp + 0xc8]
mov ecx, dword [edx]
mov dword [ecx + esi + 4], eax
mov eax, dword [esp + 0x94]
mov eax, dword [eax]
mov ecx, dword [edx]
mov dword [ecx + esi], eax
mov eax, dword [esp + 0xbc]
mov ecx, dword [esp + 0x90]
mov dword [eax], ecx
mov eax, ebx
imul eax, eax
and eax, 3
cmp eax, 2
sbb eax, eax
and eax, 1
cmp ebx, eax
jb 0x58c218
jmp 0x58c306
lea eax, [ecx*4]
lea esi, [eax + eax*2]
jmp 0x58c2f5
mov byte [esp + 0x9a], 0x2a
mov eax, ebx
not eax
and eax, 1
add eax, ebx
setne al
movzx eax, al
add ebx, eax
lea eax, [esp + 0x11c]
mov dword [esp], eax
call fcn.007c3e70
mov ecx, 3
sub ecx, eax
xor ecx, eax
setne cl
movzx ecx, cl
add ecx, eax
mov edx, dword [esp + 0xc8]
mov eax, dword [edx]
mov dword [eax + esi + 4], ecx
mov eax, dword [esp + 0x94]
mov eax, dword [eax]
mov ecx, dword [edx]
mov dword [ecx + esi], eax
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0xbc]
mov dword [ecx], eax
mov eax, ebx
imul eax, eax
and eax, 3
test ebx, ebx
je 0x58c291
cmp eax, 3
je 0x58c291
mov eax, dword [esp + 0x90]
mov dword [esp + 0x8c], eax
mov dl, byte [esp + 0xa3]
mov esi, dword [esp + 0xa4]
mov ebx, dword [esp + 0x88]
mov eax, ebx
or eax, 2
mov ecx, ebx
xor ecx, 2
add ecx, eax
setne al
movzx ecx, al
add ecx, ebx
mov eax, dword [ebp + 0x14]
cmp ecx, eax
jae 0x58c4be
mov byte [esp + 0xa3], dl
mov eax, ecx
not eax
and eax, 1
add eax, ecx
mov dword [esp + 0xb8], ecx
mov eax, dword [esp + 0x8c]
mov dword [esp + 0xc4], eax
mov dl, byte [esp + 0xc3]
je 0x58bb17
mov dword [esp + 0xa4], esi
movzx eax, dl
cmp eax, 0x23
je 0x58be5c
mov ebx, 0x16
cmp eax, 0x6f
jne 0x58c4ab
mov byte [esp + 0xc3], 0x6f
lea eax, [esp + 0x11c]
mov esi, eax
mov dword [esp], esi
mov dword [esp + 8], 0x400
mov dword [esp + 4], 0
call fcn.007c51a0
mov eax, dword [ebp + 0x10]
mov ebx, dword [esp + 0xb8]
lea ecx, [eax + ebx*4]
mov dword [esp + 0x94], ecx
mov eax, dword [eax + ebx*4]
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xcc]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov dword [esp + 0x14], 0x400
call fcn.0043bb90
mov edx, 0x17
test eax, eax
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x9c], ecx
mov eax, ecx
mov dword [esp + 0x78], eax
mov dword [esp + 0x88], ebx
mov dword [esp + 0xc4], ecx
mov esi, dword [esp + 0xa4]
jne 0x58bf07
cmp edx, 0xd
jne 0x58c4e6
mov eax, edx
and eax, 1
xor eax, edx
not eax
test eax, eax
je 0x58c4f2
mov byte [esp + 0x47], 0x2f
mov eax, dword [esp + 0x50]
mov ebx, dword [esp + 0x80]
mov dword [ebx], eax
lea eax, [esp + 0x11c]
mov dword [esp], eax
call fcn.004938e0
mov ecx, dword [ebx]
mov edx, dword [esp + 0x68]
lea edx, [edx*4]
lea edx, [edx + edx*2]
mov dword [ecx + edx + 8], eax
mov eax, dword [ebx]
xor ebx, ebx
cmp dword [eax + edx + 8], 0
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x9c], eax
jne 0x58c4fe
jmp 0x58c982
mov eax, dword [esp + 0x8c]
mov esi, dword [esp + 0xa4]
jmp 0x58c68a
mov dword [esp + 0xb8], ecx
mov byte [esp + 0xa3], dl
mov eax, dword [esp + 0x8c]
mov dword [esp + 0xc4], eax
mov dl, byte [esp + 0xc3]
jmp 0x58bb17
mov dl, byte [esp + 0xa3]
jmp 0x58c322
mov dl, byte [esp + 0xa3]
jmp 0x58c322
lea ebx, [esp + 0x11c]
mov dword [esp], ebx
call fcn.007c3e70
mov ecx, 3
sub ecx, eax
xor ecx, eax
setne cl
movzx ecx, cl
add ecx, eax
mov ebx, dword [esp + 0x80]
mov eax, dword [ebx]
mov edx, dword [esp + 0x68]
lea edx, [edx*4]
lea edx, [edx + edx*2]
mov dword [eax + edx + 4], ecx
mov eax, dword [esp + 0x54]
mov eax, dword [eax]
mov ecx, dword [ebx]
mov dword [ecx + edx], eax
mov ecx, dword [esp + 0x64]
mov eax, dword [esp + 0x6c]
mov dword [eax], ecx
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x8c], eax
mov dword [esp + 0x48], ecx
mov edx, dword [ebp + 0x1c]
mov ebx, dword [esp + 0x58]
mov eax, ebx
not eax
and eax, 1
add eax, ebx
setne al
movzx eax, al
add eax, ebx
cmp eax, edx
mov dl, byte [esp + 0xa3]
jb 0x58c5aa
mov dword [esp + 0x58], ebx
mov dword [esp + 0x64], ecx
mov dword [esp + 0x4c], eax
imul eax, eax
and eax, 3
cmp eax, 2
lea ebx, [esp + 0x11c]
jne 0x58c796
jmp 0x58bc4e
mov dword [esp + 0x64], ecx
lea ebx, [esp + 0x11c]
mov dword [esp + 0x4c], eax
jmp 0x58bc4e
mov byte [esp + 0x7f], 0x6c
mov eax, dword [edi + 0x14]
test eax, eax
jne 0x58ca3b
mov ecx, eax
or ecx, 2
xor eax, 2
add eax, ecx
jne 0x58ca76
jmp 0x58ca3b
mov ebx, 0x1d
mov byte [esp + 0x76], 0x11
mov eax, dword [edi + 0x1c]
test eax, eax
jne 0x58ca27
mov edx, 0x10
mov ecx, 3
sub ecx, eax
xor ecx, eax
je 0x58ca27
cmp edx, 0xf
je 0x58b851
xor eax, eax
test al, al
jne 0x58b851
mov ecx, 0xc
mov edx, 0xf
movzx eax, byte [esp + 0x76]
cmp eax, 0x11
mov eax, dword [esp + 0xc4]
mov dword [esp + 0x8c], eax
jne 0x58c9fc
cmp edx, 0xf
mov eax, dword [esp + 0x9c]
je 0x58c66f
imul edx, edx
and edx, 3
cmp edx, 2
je 0x58c66f
mov dword [esp + 0x8c], eax
mov dl, byte [esp + 0xa3]
jmp 0x58c322
mov ebx, 9
mov byte [esp + 0x76], 0x11
mov dword [esp], edi
call fcn.004936c0
xor esi, esi
mov eax, dword [esp + 0x8c]
cmp ebx, 9
je 0x58c998
mov dword [esp + 0xc4], eax
xor eax, eax
test al, al
jne 0x58c998
mov dword [esp + 0x4c], 0x1d
mov byte [esp + 0xc3], 0x23
lea eax, [esp + 0x11c]
mov dword [esp + 0xa4], esi
mov esi, eax
mov dword [esp], esi
mov dword [esp + 8], 0x400
mov dword [esp + 4], 0
call fcn.007c51a0
mov eax, dword [ebp + 0x10]
mov ebx, dword [esp + 0xb8]
lea ecx, [eax + ebx*4]
mov dword [esp + 0x94], ecx
mov eax, dword [eax + ebx*4]
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0xa4]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xcc]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov dword [esp + 0x14], 0x400
call fcn.0043bb90
mov ecx, 7
test eax, eax
mov eax, dword [esp + 0xc4]
mov dword [esp + 0x9c], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x88], ebx
mov dl, byte [esp + 0xa3]
mov bl, byte [esp + 0x9b]
jne 0x58c7f2
mov byte [esp + 0x9b], bl
cmp ecx, 7
jne 0x58c788
mov eax, ecx
and eax, 1
xor eax, ecx
not eax
test eax, eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x8c], eax
jne 0x58c322
jmp 0x58c796
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x8c], eax
mov eax, 0xe
mov cl, byte [esp + 0x87]
movzx ecx, cl
cmp ecx, 0x1f
jne 0x58c82e
mov ah, dl
mov byte [esp + 0x87], 0x1f
mov byte [esp + 0xac], 0x72
mov al, 0xf
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x58c841
mov dword [esp + 0x4c], 0xf
mov edx, ecx
and edx, 1
inc edx
xor edx, ecx
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x9c], ecx
mov dl, ah
mov bl, byte [esp + 0x9b]
je 0x58c858
mov byte [esp + 0x9b], bl
mov byte [esp + 0xa3], dl
mov ecx, dword [esp + 0x4c]
cmp ecx, 0xf
je 0x58ca3b
mov eax, ecx
and eax, 1
inc eax
xor eax, ecx
mov eax, dword [esp + 0xc4]
mov dword [esp + 0x8c], eax
jne 0x58bf07
jmp 0x58ca3b
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x9c], ecx
jmp 0x58b88f
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x9c], ecx
mov dl, ah
mov bl, byte [esp + 0x9b]
mov byte [esp + 0xa3], dl
movzx edx, al
cmp edx, 8
je 0x58c8bc
mov byte [esp + 0x9b], bl
mov ecx, 0x12
mov eax, 7
cmp edx, 0x1d
mov edx, dword [esp + 0xc4]
mov dword [esp + 0x8c], edx
jne 0x58caf8
xor ebx, ebx
cmp eax, 7
jne 0x58c982
mov byte [esp + 0x7f], 0x6c
cmp dword [edi + 0x14], 0
mov eax, dword [esp + 0x8c]
mov dword [esp + 0xc4], eax
jne 0x58ca3b
jmp 0x58ca76
mov byte [esp + 0x9b], bl
mov eax, 0x10
mov byte [esp + 0x7f], 0x6c
cmp dword [edi + 0x14], 0
je 0x58ca6d
xor ecx, ecx
test cl, cl
je 0x58ca3b
jmp 0x58ca6d
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
adc eax, 0
mov dword [edx], edi
mov ecx, eax
and ecx, 1
xor ecx, eax
cmp ecx, 0xffffffff
setne cl
movzx ecx, cl
cmp eax, ecx
jb 0x58c8f0
jmp 0x58c998
inc ebx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x24], 0x39
mov dword [esp + 0x20], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
xor ecx, ecx
xor edx, edx
call fcn.005859d0
mov dword [esp], edi
call fcn.004936c0
mov esi, 0x70000003
mov eax, ebx
or eax, 2
mov ecx, ebx
xor ecx, 2
add ecx, eax
setne al
movzx eax, al
cmp ebx, eax
jb 0x58c920
mov eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [esp + 0x50]
mov ebx, dword [esp + 0x80]
mov dword [ebx], eax
lea eax, [esp + 0x11c]
mov dword [esp], eax
call fcn.004938e0
mov ecx, dword [ebx]
mov edx, dword [esp + 0x68]
lea edx, [edx*4]
lea edx, [edx + edx*2]
mov dword [ecx + edx + 8], eax
mov eax, dword [ebx]
mov eax, dword [eax + edx + 8]
test eax, eax
je 0x58c9f7
mov byte [esp + 0x47], 0x42
imul eax, eax
and eax, 3
cmp eax, 2
mov ecx, 3
jne 0x58c4fe
jmp 0x58c9fc
mov ecx, 3
cmp ecx, 3
jne 0x58ca13
imul ecx, ecx
and ecx, 3
cmp ecx, 2
jae 0x58ca13
xor ebx, ebx
jmp 0x58c982
mov ebx, 0xf
mov byte [esp + 0x76], 0x5d
mov dword [esp], edi
call fcn.004936c0
xor esi, esi
cmp ebx, 0xf
jne 0x58ca3b
mov eax, ebx
not eax
and eax, 1
add eax, ebx
jne 0x58c998
mov edx, dword [ebp + 0x20]
xor eax, eax
mov cl, byte [esp + 0xac]
movzx ecx, cl
cmp ecx, 0x3b
je 0x58cb15
cmp ecx, 0x72
je 0x58cae0
mov eax, 0x1b
mov byte [esp + 0xac], 0x3b
mov dword [edx], edi
xor esi, esi
cmp eax, 0x10
jne 0x58c998
mov ecx, 0xf
mov al, byte [esp + 0x7f]
movzx eax, al
cmp eax, 0x27
jne 0x58b74f
mov eax, 5
mov byte [esp + 0x7f], 0x27
mov ecx, dword [edi + 0xc]
test ecx, ecx
jne 0x58caad
mov edx, ecx
and edx, 1
xor edx, ecx
not edx
test edx, edx
jne 0x58c5e3
cmp eax, 4
je 0x58c9a2
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
jne 0x58ca3b
jmp 0x58c9a2
mov ecx, 6
mov byte [esp + 0xac], 0x72
inc eax
mov dword [edx], edi
mov esi, eax
or esi, 2
mov ebx, eax
xor ebx, 2
add ebx, esi
setne bl
movzx esi, bl
cmp eax, esi
jb 0x58cad0
xor esi, esi
cmp ecx, 6
jne 0x58c5be
mov eax, 3
sub eax, ecx
xor eax, ecx
jne 0x58c998
jmp 0x58c5be
xor esi, esi
jmp 0x58c900
mov eax, 0xa
mov ecx, dword [0x7dc5e0]
mov dword [esp + 0xf0], ecx
movsd xmm0, qword [0x7dc5d8]
movsd qword [esp + 0xe8], xmm0
mov ecx, dword [esp + 0xcc]
mov dword [esp + 0xf0], ecx
mov edx, dword [ebp + 0x1c]
mov dword [esp + 0xf4], edx
mov esi, dword [ebp + 0x30]
mov ecx, dword [esi + 0xc]
shl ecx, 0x18
or ecx, dword [esi + 8]
mov dword [esp + 0xf8], ecx
test edx, edx
jne 0x58cb8c
mov byte [esp + 0xb3], 0x1c
cmp eax, 7
jne 0x58cbe9
mov ecx, 3
sub ecx, eax
xor ecx, eax
jne case.0x58a1dc.21
jmp 0x58cbe9
lea eax, [esp + 0xe8]
mov dword [esp], eax
call fcn.00595750
or eax, 2
cmp eax, 2
jne 0x58cbb9
mov al, 0x45
movzx eax, al
cmp eax, 4
je 0x58d17e
cmp eax, 0x45
jmp 0x58d17e
mov byte [esp + 0xb3], 0x1c
mov dword [esp + 0xa8], 0x13
mov eax, dword [esp + 0xa8]
cmp eax, 5
mov ecx, eax
jne 0x58cbe9
mov eax, 3
sub eax, ecx
xor eax, ecx
jne case.0x58a1dc.25
mov edx, 5
movzx eax, byte [esp + 0xb3]
cmp eax, 0x1a
je case.0x58a1dc.22
mov ebx, 0xc
cmp eax, 0x64
je 0x58d038
jmp 0x58cc24
cmp edx, 5
jne case.0x58a1dc.25
mov eax, edx
or eax, 2
xor edx, 2
add edx, eax
je case.0x58a1dc.25
mov edi, 0x7000002b
jmp case.0x58a1dc.4
movzx eax, byte [esp + 0xc3]
cmp eax, 0x7a
jne 0x58cc97
mov byte [esp + 0xc3], 0x76
mov eax, dword [ebp + 0x30]
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 0x2c]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 9
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
xor ecx, ecx
xor edx, edx
call fcn.0054f990
mov edi, eax
imul eax, eax
and eax, 3
cmp eax, 3
sete al
movzx eax, al
cmp edi, eax
jne case.0x58a1dc.4
jmp 0x58d17e
mov esi, 6
mov byte [esp + 0xc3], 0x7a
mov eax, dword [ebp + 0x30]
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 0x2c]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 9
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
xor ecx, ecx
xor edx, edx
call fcn.0054f990
mov edi, eax
and eax, 1
inc eax
xor eax, edi
sete al
movzx eax, al
cmp edi, eax
je 0x58d17e
cmp esi, 6
jne 0x58cd04
mov eax, 3
sub eax, esi
xor eax, esi
jne case.0x58a1dc.4
mov edi, 0x7000002b
mov eax, 0x13
jmp 0x58cf6a
mov byte [esp + 0xbc], 0x6c
mov eax, dword [0x7dc5e0]
mov dword [esp + 0xf0], eax
movsd xmm0, qword [0x7dc5d8]
movsd qword [esp + 0xe8], xmm0
mov eax, dword [esp + 0xcc]
mov dword [esp + 0xf0], eax
mov eax, dword [ebp + 0x1c]
mov ecx, eax
mov dword [esp + 0xf4], ecx
mov eax, dword [ebp + 0x30]
mov edx, eax
mov eax, dword [edx + 0xc]
shl eax, 0x18
or eax, dword [edx + 8]
mov dword [esp + 0xf8], eax
mov dword [esp + 0xc8], 0x7000002b
test ecx, ecx
je 0x58d00e
lea eax, [esp + 0xe8]
mov dword [esp], eax
call fcn.00595750
test eax, eax
je 0x58cda6
cmp eax, 2
jne 0x58ce5c
mov dword [esp + 0xc8], 0
jmp 0x58d00e
mov dword [esp + 0xac], 2
mov eax, dword [esp + 0xac]
cmp eax, 2
mov ecx, eax
je 0x58ceb3
mov eax, ecx
and eax, 1
inc eax
xor eax, ecx
je 0x58cec3
movzx eax, byte [esp + 0xb8]
cmp eax, 0x22
jne 0x58ced3
mov byte [esp + 0xb8], 0x22
mov eax, dword [0x7dc5e0]
mov dword [esp + 0xf0], eax
movsd xmm0, qword [0x7dc5d8]
movsd qword [esp + 0xe8], xmm0
mov eax, dword [esp + 0xcc]
mov dword [esp + 0xf0], eax
mov eax, dword [ebp + 0x1c]
mov ecx, eax
mov dword [esp + 0xf4], ecx
mov eax, dword [ebp + 0x30]
mov edx, eax
mov eax, dword [edx + 0xc]
shl eax, 0x18
or eax, dword [edx + 8]
mov dword [esp + 0xf8], eax
mov eax, ecx
and eax, 1
inc eax
xor eax, ecx
sete al
movzx eax, al
mov dword [esp + 0xc8], 0
cmp ecx, eax
je 0x58cd04
jmp 0x58d0cf
mov al, 0x4b
movzx eax, al
cmp eax, 0x4b
je 0x58cf5a
cmp eax, 0x63
jne 0x58cf87
xor ecx, ecx
mov bl, byte [esp + 0xc4]
jmp 0x58ce93
mov eax, 0xa
mov edx, ecx
imul edx, edx
and edx, 3
cmp edx, 2
adc ecx, 0
mov edx, ecx
or edx, 2
mov esi, ecx
xor esi, 2
add esi, edx
setne dl
movzx edx, dl
mov esi, 0x7000002b
cmp ecx, edx
jb 0x58ce80
jmp 0x58d0a2
mov dword [esp + 0xc8], 0
jmp 0x58d00e
mov dword [esp + 0xc8], 0
jmp 0x58d00e
mov esi, 0x14
mov eax, dword [0x7dc5e0]
mov dword [esp + 0xf0], eax
movsd xmm0, qword [0x7dc5d8]
movsd qword [esp + 0xe8], xmm0
mov eax, dword [esp + 0xcc]
mov dword [esp + 0xf0], eax
mov eax, dword [ebp + 0x1c]
mov ecx, eax
mov dword [esp + 0xf4], ecx
mov eax, dword [ebp + 0x30]
mov edx, eax
mov eax, dword [edx + 0xc]
shl eax, 0x18
or eax, dword [edx + 8]
mov dword [esp + 0xf8], eax
mov eax, ecx
imul eax, eax
and eax, 3
cmp eax, 2
sete al
movzx eax, al
mov dword [esp + 0xc8], 0
cmp ecx, eax
mov eax, 0x15
mov byte [esp + 0xb8], 0x6a
je 0x58ccf0
jmp 0x58d308
mov eax, 0xf
mov dword [esp + 0xc8], 0x7000002b
cmp eax, 0xf
jne case.0x58a1dc.4
mov ecx, 3
sub ecx, eax
xor ecx, eax
jne 0x58d00e
jmp case.0x58a1dc.4
mov dword [esp + 0xc8], 0x7000002b
jmp 0x58d00e
mov eax, 0xa
mov byte [esp + 0xbc], 0x54
mov ecx, dword [0x7dc5e0]
mov dword [esp + 0xf0], ecx
movsd xmm0, qword [0x7dc5d8]
movsd qword [esp + 0xe8], xmm0
mov ecx, dword [esp + 0xcc]
mov dword [esp + 0xf0], ecx
mov ecx, dword [ebp + 0x1c]
mov edx, ecx
mov dword [esp + 0xf4], edx
mov ecx, dword [ebp + 0x30]
mov esi, ecx
mov ecx, dword [esi + 0xc]
shl ecx, 0x18
or ecx, dword [esi + 8]
mov dword [esp + 0xf8], ecx
mov ecx, edx
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete cl
movzx ecx, cl
mov dword [esp + 0xc8], 0x7000002b
cmp edx, ecx
jne 0x58d084
mov eax, 0xa
mov edi, dword [esp + 0xc8]
cmp eax, 7
jne case.0x58a1dc.4
mov ecx, eax
or ecx, 2
xor eax, 2
add eax, ecx
jne case.0x58a1dc.25
jmp case.0x58a1dc.4
cmp ebx, 0xc
jne 0x58d092
imul ebx, ebx
and ebx, 3
cmp ebx, 2
jae 0x58d092
xor ecx, ecx
mov edi, 0x7000002b
jmp 0x58d06f
mov eax, 3
add edx, ecx
setne dl
movzx edx, dl
add ecx, edx
mov edx, ecx
not edx
and edx, 1
mov esi, ecx
add esi, edx
setne bl
movzx esi, bl
cmp ecx, esi
jb 0x58d060
cmp eax, 3
jne 0x58cd7a
jmp case.0x58a1dc.4
mov eax, 0x19
xor edi, edi
mov bl, 0x2c
mov esi, dword [esp + 0xc8]
cmp eax, 0xa
jne case.0x58a1dc.4
mov dword [esp + 0xc8], esi
mov byte [esp + 0xc4], bl
mov ecx, eax
and ecx, 1
xor ecx, eax
not ecx
test ecx, ecx
jne 0x58d00e
jmp case.0x58a1dc.4
lea eax, [esp + 0xe8]
mov dword [esp], eax
call fcn.00595750
test eax, eax
je 0x58d113
mov ecx, 0x14
mov dword [esp + 0xa4], 0x1c
cmp eax, 2
jne 0x58d320
cmp dword [esp + 0xa4], 0x10
je case.0x58a1dc.21
xor eax, eax
test al, al
jne case.0x58a1dc.21
mov esi, 0x10
mov eax, dword [ebp + 0x30]
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 0x2c]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 9
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
xor ecx, ecx
xor edx, edx
call fcn.0054f990
mov edi, eax
imul eax, eax
and eax, 3
cmp eax, 3
sete al
movzx eax, al
cmp edi, eax
jne case.0x58a1dc.4
cmp esi, 3
je 0x58cd7a
mov eax, esi
and eax, 1
inc eax
xor eax, esi
je 0x58cd7a
mov ebx, 0xd
movzx ecx, byte [esp + 0xc4]
cmp ecx, 0xf
je 0x58d038
mov eax, 0xe
cmp ecx, 0x2c
je 0x58d308
cmp ecx, 0x51
jne 0x58d331
mov al, byte [esp + 0xc3]
mov cl, byte [esp + 0xc4]
mov dl, byte [esp + 0xb8]
mov esi, dword [esp + 0xc8]
mov byte [esp + 0xb8], dl
mov byte [esp + 0xc4], cl
mov byte [esp + 0xc3], al
xor eax, eax
cmp ebx, 0xd
je 0x58d2b2
mov ecx, ebx
and ecx, 1
inc ecx
xor ecx, ebx
je 0x58d2b2
movzx ecx, byte [esp + 0xbc]
cmp ecx, 8
je 0x58cf94
mov dword [esp + 0xc8], esi
mov eax, 9
cmp ecx, 0x54
je 0x58d295
mov esi, 3
mov byte [esp + 0xbc], 8
mov eax, dword [0x7dc5e0]
mov dword [esp + 0xf0], eax
movsd xmm0, qword [0x7dc5d8]
movsd qword [esp + 0xe8], xmm0
mov eax, dword [esp + 0xcc]
mov dword [esp + 0xf0], eax
mov edx, dword [ebp + 0x1c]
mov dword [esp + 0xf4], edx
mov eax, dword [ebp + 0x30]
mov ecx, eax
mov eax, dword [ecx + 0xc]
shl eax, 0x18
or eax, dword [ecx + 8]
mov dword [esp + 0xf8], eax
mov dword [esp + 0xc8], 0x7000002b
test edx, edx
jne 0x58d167
mov eax, 0x18
mov ecx, 3
sub ecx, edx
xor ecx, edx
je 0x58d167
cmp eax, 9
jne 0x58d00e
imul eax, eax
and eax, 3
cmp eax, 2
jb 0x58cd13
jmp 0x58d00e
mov bl, byte [esp + 0xc4]
jmp 0x58d2d7
mov ecx, 5
mov bl, 0x6c
mov edx, eax
imul edx, edx
and edx, 3
cmp edx, 2
adc eax, 0
xor edi, edi
test eax, eax
je 0x58d2c0
mov dword [esp + 0xc8], esi
mov byte [esp + 0xc4], bl
cmp ecx, 5
jne case.0x58a1dc.21
mov eax, ecx
and eax, 1
xor eax, ecx
not eax
test eax, eax
jne case.0x58a1dc.4
jmp case.0x58a1dc.21
cmp eax, 0xe
jne 0x58d0cf
mov ecx, 5
xor edi, edi
mov byte [esp + 0xc4], 0xf
cmp ecx, 5
je case.0x58a1dc.4
xor eax, eax
test al, al
je 0x58cd04
jmp case.0x58a1dc.4
xor eax, eax
mov bl, byte [esp + 0xc4]
jmp 0x58d357
mov esi, 0xd
mov bl, 0x51
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
adc eax, 0
xor edi, edi
mov ecx, eax
or ecx, 2
mov edx, eax
xor edx, 2
add edx, ecx
setne cl
movzx ecx, cl
cmp eax, ecx
jb 0x58d340
mov byte [esp + 0xc4], bl
cmp esi, 0xd
jne case.0x58a1dc.25
mov eax, esi
and eax, 1
xor eax, esi
not eax
test eax, eax
je case.0x58a1dc.25
mov eax, edi
jmp 0x58c99a