Function at 0x42ebb0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x94
push ebx
push esi
mov esi, dword [ebp + 0x18]
mov ebx, edx
push edi
push 0x10030
mov dword [esp + 0xa0], ebx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x88], 0
call fcn.004994a3
mov dword [esp + 0x58], eax
mov edx, ebx
mov eax, dword [ebp + 0xc]
add esp, 4
mov dword [esp + 0x34], ebx
mov dword [esp + 0x64], edx
mov ecx, dword [eax]
mov eax, dword [ebp + 0x10]
add ecx, ebx
mov ebx, dword [ebp + 8]
add eax, ebx
cmp dword [esp + 0x54], 0
mov dword [esp + 0x28], ecx
mov dword [esp + 0x38], ebx
je 0x431380
mov ecx, dword [ebp + 0xc]
mov edi, edx
cmp dword [ebp + 0x1c], 2
mov dword [ecx], 0
lea ecx, [eax - 5]
cmovne ecx, eax
cmp esi, 0x1000
mov eax, 0xfff
mov dword [esp + 0x88], ecx
cmovb eax, esi
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x28]
add eax, 0xfffffff4
cmp edx, eax
ja 0x4310a3
lfence
nop word [eax + eax]
mov esi, dword [esp + 0x3c]
mov eax, edi
sub eax, edx
mov dword [esp + 0x50], 0
mov dword [esp + 0x30], eax
mov dword [esp + 0x48], 0
mov ecx, dword [esi + 0x4001c]
mov ebx, dword [esi + 0x4000c]
mov edx, dword [esi + 0x40004]
mov dword [esp + 0x68], ecx
mov ecx, ebx
sub ecx, edx
mov dword [esp + 0x78], 0
add ecx, edi
mov dword [esp + 0xc], 3
mov edi, dword [esi + 0x40010]
mov esi, edi
mov dword [esp + 0x58], ecx
add ecx, 0xffff0001
mov dword [esp + 0x40], edi
mov dword [esp + 0x18], edx
lea eax, [edi + 0x10000]
mov dword [esp + 0x1c], ebx
cmp eax, dword [esp + 0x58]
mov dword [esp + 0x24], 0
cmovbe esi, ecx
mov dword [esp + 0x74], 0
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x3c]
mov eax, dword [esi + 0x40008]
mov esi, dword [esi + 0x40014]
mov dword [esp + 0x60], eax
sub eax, edi
mov dword [esp + 0x5c], eax
xor edi, edi
add eax, ebx
mov dword [esp + 0x80], edi
mov dword [esp + 0x6c], eax
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x34]
mov ecx, dword [eax]
mov eax, dword [esp + 0x58]
mov dword [esp + 0x20], ecx
cmp esi, eax
jae 0x42ed7b
mov edi, edx
lfence
sub edi, ebx
imul eax, dword [edi + esi], 0x9e3779b1
mov ecx, dword [esp + 0x3c]
mov ebx, dword [esp + 0x3c]
shr eax, 0x11
lea edx, [ecx + eax*4]
mov ecx, esi
sub ecx, dword [edx]
mov eax, 0xffff
cmp ecx, 0xffff
cmova ecx, eax
movzx eax, si
mov word [ebx + eax*2 + 0x20000], cx
mov dword [edx], esi
inc esi
cmp esi, dword [esp + 0x58]
jb 0x42ed30
mov ebx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x58]
mov esi, dword [esp + 0x3c]
mov edi, dword [esp + 0x14]
mov dword [esi + 0x40014], eax
mov eax, dword [esp + 0x34]
imul eax, dword [eax], 0x9e3779b1
shr eax, 0x11
mov esi, dword [esi + eax*4]
mov dword [esp + 0x10], esi
cmp esi, edi
jb 0x42f349
lfence
jmp 0x42edb8
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x7c]
test eax, eax
jle 0x42f349
xor edi, edi
dec eax
mov dword [esp + 0x7c], eax
cmp dword [ebp + 0x28], edi
je 0x42eddf
mov eax, dword [esp + 0x58]
sub eax, esi
cmp eax, 8
jb 0x42f015
cmp esi, ebx
jb 0x42eeaf
mov eax, esi
sub eax, ebx
lea ebx, [eax + edx]
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0xc]
mov ax, word [eax + edx - 1]
mov edx, dword [esp + 0xc]
cmp ax, word [ebx + edx - 1]
jne 0x42f015
cmp dword [ebx], ecx
jne 0x42f015
mov edx, dword [esp + 0x28]
lea ecx, [ebx + 4]
mov esi, dword [esp + 0x34]
add edx, 0xfffffffb
add esi, 4
add edx, 0xfffffffd
mov edi, esi
cmp esi, edx
jae 0x42ee50
lfence
mov eax, dword [esi]
xor eax, dword [ecx]
jne 0x42ee99
add esi, 4
add ecx, 4
cmp esi, edx
jae 0x42ee50
nop
mov eax, dword [esi]
xor eax, dword [ecx]
jne 0x42eea2
add esi, 4
add ecx, 4
cmp esi, edx
jb 0x42ee40
mov edx, dword [esp + 0x28]
add edx, 0xfffffffb
lea eax, [edx - 1]
cmp esi, eax
jae 0x42ee6c
mov ax, word [ecx]
cmp ax, word [esi]
jne 0x42ee6c
add esi, 2
add ecx, 2
cmp esi, edx
jae 0x42ee77
mov al, byte [ecx]
cmp al, byte [esi]
jne 0x42ee77
inc esi
mov eax, esi
sub eax, edi
mov esi, dword [esp + 0x10]
lea edi, [eax + 4]
cmp edi, dword [esp + 0xc]
jle 0x42f019
mov dword [esp + 0xc], edi
mov dword [esp + 0x78], ebx
jmp 0x42f023
mov ecx, eax
call fcn.0042e600
jmp 0x42ee7b
mov ecx, eax
call fcn.0042e600
sub esi, edi
add eax, esi
jmp 0x42ee7b
mov ecx, esi
lea eax, [ebx - 4]
sub ecx, dword [esp + 0x40]
add ecx, dword [esp + 0x60]
cmp esi, eax
ja 0x42f015
mov eax, dword [esp + 0x20]
cmp dword [ecx], eax
jne 0x42f015
mov edx, dword [esp + 0x28]
mov eax, ebx
sub eax, esi
add edx, 0xfffffffb
mov esi, dword [esp + 0x34]
mov ebx, edx
add eax, esi
cmp eax, edx
cmovbe ebx, eax
add esi, 4
add ecx, 4
mov edi, esi
lea edx, [ebx - 3]
cmp esi, edx
jae 0x42ef24
lfence
mov eax, dword [esi]
xor eax, dword [ecx]
jne 0x42efe5
add esi, 4
add ecx, 4
cmp esi, edx
jae 0x42ef24
nop
mov eax, dword [esi]
xor eax, dword [ecx]
jne 0x42eff1
add esi, 4
add ecx, 4
cmp esi, edx
jb 0x42ef10
lea eax, [ebx - 1]
cmp esi, eax
jae 0x42ef39
mov ax, word [ecx]
cmp ax, word [esi]
jne 0x42ef39
add esi, 2
add ecx, 2
cmp esi, ebx
jae 0x42ef44
mov al, byte [ecx]
cmp al, byte [esi]
jne 0x42ef44
inc esi
mov eax, esi
sub eax, edi
mov esi, dword [esp + 0x34]
lea edi, [eax + 4]
add esi, edi
cmp esi, ebx
jne 0x42efc7
mov edx, dword [esp + 0x28]
add edx, 0xfffffffb
cmp ebx, edx
jae 0x42efc7
mov eax, dword [esp + 0x18]
add edx, 0xfffffffd
mov ecx, eax
mov ebx, esi
cmp esi, edx
jae 0x42ef9a
lfence
mov ecx, dword [eax]
xor ecx, dword [esi]
jne 0x42f001
add esi, 4
lea ecx, [eax + 4]
cmp esi, edx
jae 0x42ef9a
mov eax, dword [ecx]
xor eax, dword [esi]
jne 0x42f008
add esi, 4
add ecx, 4
cmp esi, edx
jb 0x42ef86
mov edx, dword [esp + 0x28]
add edx, 0xfffffffb
lea eax, [edx - 1]
cmp esi, eax
jae 0x42efb6
mov ax, word [ecx]
cmp ax, word [esi]
jne 0x42efb6
add esi, 2
add ecx, 2
cmp esi, edx
jae 0x42efc1
mov al, byte [ecx]
cmp al, byte [esi]
jne 0x42efc1
inc esi
mov eax, esi
sub eax, ebx
add edi, eax
mov esi, dword [esp + 0x10]
cmp edi, dword [esp + 0xc]
jle 0x42f019
mov ecx, esi
mov dword [esp + 0xc], edi
sub ecx, dword [esp + 0x1c]
add ecx, dword [esp + 0x18]
mov dword [esp + 0x78], ecx
jmp 0x42f023
mov ecx, eax
call fcn.0042e600
jmp 0x42ef48
mov ecx, eax
call fcn.0042e600
sub esi, edi
add eax, esi
jmp 0x42ef48
call fcn.0042e600
jmp 0x42efc5
mov ecx, eax
call fcn.0042e600
sub esi, ebx
add eax, esi
jmp 0x42efc5
cmp edi, dword [esp + 0xc]
jne 0x42f0b4
mov edi, dword [esp + 0xc]
lea eax, [esi + edi]
cmp eax, dword [esp + 0x58]
ja 0x42f0b4
lea eax, [edi - 3]
mov dword [esp + 0x44], 1
xor ebx, ebx
mov esi, 0x10
test eax, eax
jle 0x42f0b0
mov eax, dword [esp + 0x10]
mov edx, esi
mov ecx, dword [esp + 0x3c]
add eax, ebx
movzx eax, ax
inc esi
sar edx, 4
mov edi, 0x10
movzx ecx, word [ecx + eax*2 + 0x20000]
mov eax, ebx
cmp ecx, dword [esp + 0x44]
cmovbe eax, dword [esp + 0x24]
cmova esi, edi
mov dword [esp + 0x24], eax
mov edi, ecx
cmovbe edi, dword [esp + 0x44]
add ebx, edx
mov eax, dword [esp + 0xc]
add eax, 0xfffffffd
mov dword [esp + 0x44], edi
cmp ebx, eax
jl 0x42f046
mov edx, dword [esp + 0x24]
mov esi, dword [esp + 0x10]
mov dword [esp + 0x24], edx
cmp edi, 1
jbe 0x42f0b8
cmp edi, esi
ja 0x42f345
sub esi, edi
jmp 0x42f32f
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x3c]
movzx edi, si
mov eax, edi
cmp word [ecx + eax*2 + 0x20000], 1
jne 0x42f31b
test edx, edx
jne 0x42f31b
mov eax, dword [esp + 0x74]
lea ebx, [esi - 1]
mov dword [esp + 0x2c], ebx
test eax, eax
jne 0x42f14e
mov ecx, dword [esp + 0x20]
xor ebx, ebx
mov eax, ecx
mov edx, ecx
shr eax, 0x18
cmp cl, al
movzx eax, cx
sete bl
shr edx, 0x10
xor ecx, ecx
cmp eax, edx
sete cl
test ecx, ebx
je 0x42f141
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x20]
push eax
lea ecx, [ecx + 4]
mov dword [esp + 0x78], 2
lea edx, [edx - 5]
call fcn.0042e690
mov ebx, dword [esp + 0x30]
add esp, 4
mov edx, dword [esp + 0x24]
add eax, 4
mov dword [esp + 0x80], eax
jmp 0x42f157
mov dword [esp + 0x74], 1
jmp 0x42f317
cmp eax, 2
jne 0x42f31b
cmp ebx, dword [esp + 0x14]
jb 0x42f31b
mov ecx, dword [esp + 0x1c]
mov eax, ecx
sub eax, ebx
dec eax
cmp eax, 3
jb 0x42f31b
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x5c]
sub eax, ecx
mov edx, dword [esp + 0x20]
cmp ebx, ecx
cmovae esi, eax
add esi, ebx
cmp dword [esi], edx
jne 0x42f313
mov eax, dword [esp + 0x28]
add eax, 0xfffffffb
cmp ebx, ecx
push edx
cmovb eax, dword [esp + 0x70]
lea ecx, [esi + 4]
mov edx, eax
mov dword [esp + 0x30], eax
lfence
call fcn.0042e690
mov ecx, dword [esp + 0x20]
add esp, 4
lea edi, [eax + 4]
cmp ebx, ecx
jae 0x42f211
lea eax, [edi + esi]
cmp eax, dword [esp + 0x2c]
jne 0x42f211
mov eax, dword [esp + 0x20]
mov ecx, edi
and ecx, 3
shl ecx, 3
lfence
test ecx, ecx
je 0x42f1dc
rol eax, cl
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x18]
push eax
lea edx, [edx - 5]
call fcn.0042e690
mov edx, dword [esp + 0x1c]
add esp, 4
add edi, eax
mov ecx, esi
cmp ebx, dword [esp + 0x1c]
push dword [esp + 0x20]
cmovb edx, dword [esp + 0x64]
call fcn.0042e6e0
add esp, 4
mov ecx, eax
jmp 0x42f278
mov edx, dword [esp + 0x18]
cmp ebx, ecx
push dword [esp + 0x20]
cmovb edx, dword [esp + 0x64]
mov ecx, esi
call fcn.0042e6e0
mov ecx, dword [esp + 0x20]
add esp, 4
mov dword [esp + 0x4c], eax
cmp ebx, ecx
jb 0x42f274
sub esi, eax
cmp esi, dword [esp + 0x18]
jne 0x42f274
cmp dword [esp + 0x40], ecx
jae 0x42f274
mov ecx, eax
mov eax, dword [esp + 0x20]
neg ecx
and ecx, 3
shl ecx, 3
lfence
test ecx, ecx
je 0x42f25b
rol eax, cl
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0x6c]
push eax
call fcn.0042e6e0
mov ecx, dword [esp + 0x50]
add esp, 4
add ecx, eax
jmp 0x42f278
mov ecx, dword [esp + 0x4c]
mov esi, dword [esp + 0x14]
mov eax, ebx
sub eax, ecx
mov edx, edi
cmp eax, esi
cmova esi, eax
mov eax, dword [esp + 0x80]
sub edx, esi
add edx, ebx
cmp edx, eax
jb 0x42f2b3
cmp edi, eax
ja 0x42f2b3
sub edi, eax
lea esi, [edi + ebx]
mov ebx, dword [esp + 0x1c]
mov eax, ebx
sub eax, esi
dec eax
cmp eax, 3
cmovb esi, ebx
jmp 0x42f333
mov ebx, dword [esp + 0x1c]
mov ecx, ebx
sub ecx, esi
lea eax, [ecx - 1]
cmp eax, 3
jae 0x42f2ca
mov esi, ebx
jmp 0x42f333
mov eax, dword [esp + 0x80]
cmp edx, eax
cmovb eax, edx
cmp dword [esp + 0xc], eax
jae 0x42f2fc
mov edx, dword [esp + 0x18]
sub ecx, edx
add ecx, dword [esp + 0x34]
cmp ecx, 0xffff
ja 0x42f345
mov dword [esp + 0xc], eax
mov eax, esi
sub eax, ebx
add eax, edx
mov dword [esp + 0x78], eax
mov ecx, dword [esp + 0x3c]
movzx eax, si
movzx eax, word [ecx + eax*2 + 0x20000]
cmp eax, esi
ja 0x42f345
sub esi, eax
jmp 0x42f333
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x3c]
lea eax, [edi + edx]
movzx eax, ax
movzx eax, word [ecx + eax*2 + 0x20000]
sub esi, eax
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x14]
mov dword [esp + 0x10], esi
cmp esi, edi
jae 0x42edb0
jmp 0x42f349
mov edi, dword [esp + 0x14]
cmp dword [ebp + 0x24], 1
jne 0x42f4ac
mov ecx, dword [esp + 0x7c]
test ecx, ecx
jle 0x42f4ac
mov esi, dword [esp + 0x58]
mov eax, esi
sub eax, edi
cmp eax, 0xffff
jae 0x42f4ac
mov eax, dword [esp + 0x34]
mov ebx, dword [esp + 0x68]
lfence
imul eax, dword [eax], 0x9e3779b1
mov edx, dword [ebx + 0x40000]
sub edx, dword [ebx + 0x40004]
add edx, dword [ebx + 0x4000c]
sub edi, edx
mov dword [esp + 0x6c], edx
shr eax, 0x11
mov ebx, dword [ebx + eax*4]
add edi, ebx
mov eax, esi
mov dword [esp + 0x14], edi
sub eax, edi
cmp eax, 0xffff
ja 0x42f4ac
mov eax, ecx
dec ecx
mov dword [esp + 0x7c], ecx
test eax, eax
je 0x42f4ac
mov eax, dword [esp + 0x68]
mov ecx, dword [eax + 0x40004]
sub ecx, dword [eax + 0x4000c]
mov eax, dword [esp + 0x20]
add ecx, ebx
cmp dword [ecx], eax
jne 0x42f480
mov esi, dword [esp + 0x34]
mov eax, edx
mov edx, dword [esp + 0x28]
sub eax, ebx
add eax, esi
add edx, 0xfffffffb
cmp eax, edx
mov edi, edx
cmovbe edi, eax
add esi, 4
add ecx, 4
mov dword [esp + 0x40], esi
lea edx, [edi - 3]
cmp esi, edx
jae 0x42f437
lfence
mov eax, dword [esi]
xor eax, dword [ecx]
jne 0x42f4eb
add esi, 4
add ecx, 4
cmp esi, edx
jae 0x42f437
mov eax, dword [esi]
xor eax, dword [ecx]
jne 0x42f4f7
add esi, 4
add ecx, 4
cmp esi, edx
jb 0x42f423
lea eax, [edi - 1]
cmp esi, eax
jae 0x42f44c
mov ax, word [ecx]
cmp ax, word [esi]
jne 0x42f44c
add esi, 2
add ecx, 2
cmp esi, edi
jae 0x42f457
mov al, byte [ecx]
cmp al, byte [esi]
jne 0x42f457
inc esi
mov eax, esi
sub eax, dword [esp + 0x40]
mov edi, dword [esp + 0x14]
add eax, 4
mov edx, dword [esp + 0x6c]
cmp eax, dword [esp + 0xc]
jle 0x42f480
mov dword [esp + 0xc], eax
mov eax, edi
sub eax, dword [esp + 0x1c]
add eax, dword [esp + 0x18]
mov dword [esp + 0x78], eax
mov ecx, dword [esp + 0x68]
movzx eax, bx
movzx eax, word [ecx + eax*2 + 0x20000]
mov ecx, dword [esp + 0x7c]
sub edi, eax
sub ebx, eax
mov dword [esp + 0x14], edi
mov eax, dword [esp + 0x58]
sub eax, edi
cmp eax, 0xffff
jbe 0x42f3b6
mov edx, dword [esp + 0xc]
cmp edx, 3
jle 0x42f509
cmp dword [ebp + 0x28], 0
je 0x42f4d5
xor ecx, ecx
cmp edx, 0x24
setle cl
xor eax, eax
cmp edx, 0x12
setg al
test eax, ecx
mov eax, 0x12
cmovne edx, eax
mov edi, dword [esp + 0x34]
mov esi, edx
mov eax, edi
mov dword [esp + 0x48], esi
sub eax, dword [esp + 0x78]
mov dword [esp + 0x50], eax
jmp 0x42f513
mov ecx, eax
call fcn.0042e600
jmp 0x42f45d
mov ecx, eax
call fcn.0042e600
sub esi, dword [esp + 0x40]
add eax, esi
jmp 0x42f45d
mov eax, dword [esp + 0x50]
mov esi, eax
mov edi, dword [esp + 0x34]
test esi, esi
jne 0x42f521
inc edi
mov dword [esp + 0x34], edi
jmp 0x43108c
cmp esi, dword [esp + 0x98]
jbe 0x42f6ac
mov ecx, dword [esp + 0x30]
sub edi, eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x40], edi
mov edi, eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x2c], eax
inc eax
cmp dword [ebp + 0x1c], 0
mov dword [esp + 0x38], eax
je 0x42f577
mov eax, 0x80808081
mul ecx
mov eax, dword [esp + 0x38]
shr edx, 7
add eax, 8
add edx, ecx
add eax, edx
cmp eax, dword [esp + 0x88]
ja 0x4310e5
mov eax, dword [esp + 0x38]
cmp ecx, 0xf
jb 0x42f5c8
lea ebx, [ecx - 0xf]
mov byte [edi], 0xf0
cmp ebx, 0xff
jb 0x42f5bf
mov eax, 0x80808081
mul ebx
mov eax, dword [esp + 0x38]
mov esi, edx
shr esi, 7
push esi
push 0xff
push eax
call fcn.0048ba70
mov eax, dword [esp + 0x44]
add esp, 0xc
add eax, esi
nop
sub ebx, 0xff
sub esi, 1
jne 0x42f5b0
mov ecx, dword [esp + 0x30]
mov byte [eax], bl
inc eax
mov dword [esp + 0x38], eax
jmp 0x42f5cf
mov al, cl
shl al, 4
mov byte [edi], al
mov ebx, dword [esp + 0x38]
mov edx, dword [esp + 0x64]
sub edx, ebx
lea esi, [ecx + ebx]
nop dword [eax]
mov eax, dword [edx + ebx]
mov ecx, dword [edx + ebx + 4]
mov dword [ebx], eax
mov dword [ebx + 4], ecx
add ebx, 8
cmp ebx, esi
jb 0x42f5e0
mov eax, dword [esp + 0x34]
sub eax, dword [esp + 0x40]
mov ebx, dword [esp + 0x48]
mov word [esi], ax
add esi, 2
cmp dword [ebp + 0x1c], 0
mov dword [esp + 0x38], esi
lea ecx, [ebx - 4]
je 0x42f62e
mov eax, 0x80808081
mul ecx
shr edx, 7
lea eax, [edx + 6]
add eax, esi
cmp eax, dword [esp + 0x88]
ja 0x4310e1
mov eax, dword [esp + 0x2c]
mov al, byte [eax]
cmp ecx, 0xf
jb 0x42f693
add al, 0xf
sub ecx, 0xf
mov byte [edi], al
cmp ecx, 0x1fe
jb 0x42f665
mov eax, 0x80808081
mul ecx
shr edx, 8
mov word [esi], 0xffff
sub ecx, 0x1fe
add esi, 2
sub edx, 1
jne 0x42f652
cmp ecx, 0xff
jb 0x42f677
sub ecx, 0xff
mov byte [esi], 0xff
inc esi
mov edi, dword [esp + 0x34]
mov byte [esi], cl
inc esi
add edi, ebx
mov dword [esp + 0x38], esi
mov edx, edi
mov dword [esp + 0x34], edi
mov dword [esp + 0x64], edx
jmp 0x431090
add al, cl
mov byte [edi], al
mov edi, dword [esp + 0x34]
add edi, ebx
mov edx, edi
mov dword [esp + 0x34], edi
mov dword [esp + 0x64], edx
jmp 0x431090
mov ebx, dword [esp + 0x30]
mov eax, ebx
cmp ebx, 0xf
jl 0x42f6d0
lea ecx, [ebx - 0xf]
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
inc eax
add eax, edx
add eax, ebx
mov ecx, dword [esp + 0x54]
lea esi, [ebx + 1]
mov dword [ecx], eax
mov eax, esi
mov dword [ecx + 8], 1
mov dword [ecx + 4], 0
mov dword [ecx + 0xc], ebx
cmp esi, 0xf
jl 0x42f710
lea ecx, [ebx - 0xe]
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [esp + 0x54]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, 2
add eax, edx
add eax, ebx
mov dword [ecx + 0x1c], esi
lea esi, [ebx + 2]
mov dword [ecx + 0x10], eax
mov eax, esi
mov dword [ecx + 0x18], 1
mov dword [ecx + 0x14], 0
cmp esi, 0xf
jl 0x42f74d
lea ecx, [ebx - 0xd]
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [esp + 0x54]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, 3
add eax, edx
add eax, ebx
mov edi, dword [esp + 0x30]
add ebx, 3
mov dword [ecx + 0x20], eax
mov eax, ebx
mov dword [ecx + 0x28], 1
mov dword [ecx + 0x24], 0
mov dword [ecx + 0x2c], esi
mov dword [esp + 0x2c], ebx
cmp ebx, 0xf
jl 0x42f792
lea ecx, [edi - 0xc]
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [esp + 0x54]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, 4
add eax, edx
add eax, edi
mov esi, 4
mov dword [ecx + 0x38], 1
mov dword [ecx + 0x34], 0
mov dword [ecx + 0x3c], ebx
mov dword [ecx + 0x30], eax
cmp dword [esp + 0x48], esi
jl 0x42f883
cmp edi, 0xf
jl 0x42f833
lea ecx, [edi - 0xf]
mov eax, 0x80808081
imul ecx
add edi, esi
add edx, ecx
mov ecx, dword [esp + 0x30]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x50]
add eax, edi
mov edi, dword [esp + 0x54]
mov dword [esp + 0x2c], eax
add edi, 0x44
nop dword [eax + eax]
mov ebx, eax
cmp esi, 0x13
jl 0x42f81c
lea ecx, [esi - 0x13]
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [esp + 0x30]
sar edx, 7
mov eax, edx
inc edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x50]
add ebx, eax
mov eax, dword [esp + 0x2c]
mov dword [edi + 4], esi
inc esi
mov dword [edi], edx
mov dword [edi + 8], ecx
mov dword [edi - 4], ebx
add edi, 0x10
cmp esi, dword [esp + 0x48]
jle 0x42f7f0
jmp 0x42f883
mov eax, dword [esp + 0x30]
lea edi, [ecx + 0x44]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x48]
cmp esi, 0x13
jl 0x42f86c
lea ecx, [esi - 0x13]
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [esp + 0x50]
sar edx, 7
mov eax, edx
inc edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x48]
add ebx, eax
mov eax, dword [esp + 0x30]
mov dword [edi + 4], esi
inc esi
mov dword [edi - 4], ebx
mov ebx, dword [esp + 0x2c]
mov dword [edi], ecx
mov dword [edi + 8], eax
add edi, 0x10
cmp esi, edx
jle 0x42f842
mov edi, dword [esp + 0x48]
mov ecx, edi
mov esi, dword [esp + 0x54]
add ecx, ecx
lea edx, [edi + 1]
shl edx, 4
add edx, esi
mov dword [edx + 8], 1
mov dword [edx + 4], 0
mov dword [edx + 0xc], 1
mov eax, dword [esi + ecx*8]
inc eax
mov dword [edx + 0x18], 1
mov dword [edx], eax
mov dword [edx + 0x14], 0
mov dword [edx + 0x1c], 2
mov eax, dword [esi + ecx*8]
add eax, 2
mov dword [edx + 0x28], 1
mov dword [edx + 0x10], eax
lea eax, [edi + 3]
mov dword [edx + 0x24], 0
add eax, eax
mov dword [edx + 0x2c], 3
mov edx, 1
mov ecx, dword [esi + ecx*8]
add ecx, 3
mov dword [esp + 0x58], edx
mov dword [esi + eax*8], ecx
cmp edi, edx
jle 0x430e36
mov ebx, dword [esp + 0x34]
mov eax, dword [esp + 0x28]
add ebx, edx
add eax, 0xfffffff4
mov dword [esp + 0x20], ebx
cmp ebx, eax
ja 0x430e36
mov ecx, edx
shl ecx, 4
add ecx, esi
cmp dword [ebp + 0x20], 0
lfence
mov dword [esp + 0x7c], ecx
mov esi, dword [ecx]
mov eax, dword [ecx + 0x10]
mov dword [esp + 0x70], esi
je 0x4301c3
cmp eax, esi
jg 0x42f957
lea ecx, [edx + 4]
lea eax, [esi + 3]
add ecx, ecx
mov esi, dword [esp + 0x54]
cmp dword [esi + ecx*8], eax
jl 0x430e29
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x78], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0x60], 0
mov edi, dword [esi + 0x4000c]
mov ecx, edi
mov eax, dword [esi + 0x4001c]
mov edx, dword [esi + 0x40004]
sub ecx, edx
mov esi, dword [esi + 0x40010]
add ecx, ebx
mov dword [esp + 0x40], eax
mov ebx, esi
mov dword [esp + 0x4c], ecx
add ecx, 0xffff0001
mov dword [esp + 0x5c], esi
lea eax, [esi + 0x10000]
mov dword [esp + 0x10], 3
cmp eax, dword [esp + 0x4c]
mov dword [esp + 0x30], edx
cmovbe ebx, ecx
mov dword [esp + 0x18], edi
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x4c]
mov dword [esp + 0x24], 0
mov eax, dword [ecx + 0x40008]
mov dword [esp + 0x44], eax
sub eax, esi
mov dword [esp + 0x8c], eax
xor esi, esi
add eax, edi
mov dword [esp + 0x6c], esi
mov esi, dword [ecx + 0x40014]
mov dword [esp + 0x2c], eax
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x20]
mov eax, dword [eax]
mov dword [esp + 0x14], eax
xor eax, eax
mov dword [esp + 0x80], eax
cmp esi, ebx
jae 0x42fa63
mov edi, edx
sub edi, dword [esp + 0x18]
lfence
imul eax, dword [edi + esi], 0x9e3779b1
mov ebx, dword [esp + 0x3c]
shr eax, 0x11
lea edx, [ecx + eax*4]
mov ecx, esi
sub ecx, dword [edx]
mov eax, 0xffff
cmp ecx, 0xffff
cmova ecx, eax
movzx eax, si
mov word [ebx + eax*2 + 0x20000], cx
mov ebx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x3c]
mov dword [edx], esi
inc esi
cmp esi, ebx
jb 0x42fa22
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x20]
mov dword [ecx + 0x40014], ebx
imul eax, dword [esi], 0x9e3779b1
shr eax, 0x11
mov edx, dword [ecx + eax*4]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0xc], edx
cmp edx, ecx
jb 0x43003d
lfence
jmp 0x42fa94
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x50]
test eax, eax
jle 0x430039
xor ebx, ebx
dec eax
mov dword [esp + 0x50], eax
cmp dword [ebp + 0x28], ebx
je 0x42fabb
mov eax, dword [esp + 0x4c]
sub eax, edx
cmp eax, 8
jb 0x42fcf1
cmp edx, edi
jb 0x42fb8d
mov ecx, dword [esp + 0x10]
mov eax, edx
sub eax, edi
mov edi, dword [esp + 0x30]
add edi, eax
mov eax, dword [esp + 0x10]
mov ax, word [eax + esi - 1]
cmp ax, word [edi + ecx - 1]
jne 0x42fcf5
mov eax, dword [esp + 0x14]
cmp dword [edi], eax
jne 0x42fcf5
mov edx, dword [esp + 0x28]
lea ecx, [edi + 4]
add edx, 0xfffffffb
add esi, 4
add edx, 0xfffffffd
mov ebx, esi
cmp esi, edx
jae 0x42fb30
lfence
mov eax, dword [esi]
xor eax, dword [ecx]
jne 0x42fb77
add esi, 4
add ecx, 4
cmp esi, edx
jae 0x42fb30
nop word [eax + eax]
mov eax, dword [esi]
xor eax, dword [ecx]
jne 0x42fb80
add esi, 4
add ecx, 4
cmp esi, edx
jb 0x42fb20
mov edx, dword [esp + 0x28]
add edx, 0xfffffffb
lea eax, [edx - 1]
cmp esi, eax
jae 0x42fb4c
mov ax, word [ecx]
cmp ax, word [esi]
jne 0x42fb4c
add esi, 2
add ecx, 2
cmp esi, edx
jae 0x42fb57
mov al, byte [ecx]
cmp al, byte [esi]
jne 0x42fb57
inc esi
mov eax, esi
sub eax, ebx
mov ecx, dword [esp + 0x10]
lea ebx, [eax + 4]
cmp ebx, ecx
jle 0x42fcf7
mov dword [esp + 0x10], ebx
mov dword [esp + 0x60], edi
jmp 0x42fd01
mov ecx, eax
call fcn.0042e600
jmp 0x42fb5b
mov ecx, eax
call fcn.0042e600
sub esi, ebx
add eax, esi
jmp 0x42fb5b
mov ecx, edx
lea eax, [edi - 4]
sub ecx, dword [esp + 0x5c]
add ecx, dword [esp + 0x44]
cmp edx, eax
ja 0x42fcf1
mov eax, dword [esp + 0x14]
cmp dword [ecx], eax
jne 0x42fcf1
mov eax, dword [esp + 0x28]
sub edi, edx
add edi, esi
add eax, 0xfffffffb
cmp edi, eax
cmova edi, eax
add esi, 4
add ecx, 4
mov ebx, esi
lea edx, [edi - 3]
cmp esi, edx
jae 0x42fbf8
lfence
mov eax, dword [esi]
xor eax, dword [ecx]
jne 0x42fcc1
add esi, 4
add ecx, 4
cmp esi, edx
jae 0x42fbf8
mov eax, dword [esi]
xor eax, dword [ecx]
jne 0x42fccd
add esi, 4
add ecx, 4
cmp esi, edx
jb 0x42fbe4
lea eax, [edi - 1]
cmp esi, eax
jae 0x42fc0d
mov ax, word [ecx]
cmp ax, word [esi]
jne 0x42fc0d
add esi, 2
add ecx, 2
cmp esi, edi
jae 0x42fc18
mov al, byte [ecx]
cmp al, byte [esi]
jne 0x42fc18
inc esi
mov eax, esi
sub eax, ebx
mov esi, dword [esp + 0x20]
lea ebx, [eax + 4]
add esi, ebx
cmp esi, edi
jne 0x42fca1
mov edx, dword [esp + 0x28]
add edx, 0xfffffffb
cmp edi, edx
jae 0x42fca1
mov eax, dword [esp + 0x30]
add edx, 0xfffffffd
mov ecx, eax
mov edi, esi
cmp esi, edx
jae 0x42fc74
lfence
mov ecx, dword [esi]
xor ecx, dword [eax]
jne 0x42fcdd
add esi, 4
lea ecx, [eax + 4]
cmp esi, edx
jae 0x42fc74
nop
mov eax, dword [ecx]
xor eax, dword [esi]
jne 0x42fce4
add esi, 4
add ecx, 4
cmp esi, edx
jb 0x42fc60
mov edx, dword [esp + 0x28]
add edx, 0xfffffffb
lea eax, [edx - 1]
cmp esi, eax
jae 0x42fc90
mov ax, word [ecx]
cmp ax, word [esi]
jne 0x42fc90
add esi, 2
add ecx, 2
cmp esi, edx
jae 0x42fc9b
mov al, byte [ecx]
cmp al, byte [esi]
jne 0x42fc9b
inc esi
mov eax, esi
sub eax, edi
add ebx, eax
mov ecx, dword [esp + 0x10]
cmp ebx, ecx
jle 0x42fcf7
mov ecx, dword [esp + 0xc]
mov edx, ecx
sub edx, dword [esp + 0x18]
add edx, dword [esp + 0x30]
mov dword [esp + 0x10], ebx
mov dword [esp + 0x60], edx
jmp 0x42fd05
mov ecx, eax
call fcn.0042e600
jmp 0x42fc1c
mov ecx, eax
call fcn.0042e600
sub esi, ebx
add eax, esi
jmp 0x42fc1c
call fcn.0042e600
jmp 0x42fc9f
mov ecx, eax
call fcn.0042e600
sub esi, edi
add eax, esi
jmp 0x42fc9f
mov ecx, dword [esp + 0x10]
cmp ebx, ecx
jne 0x42fd9d
mov ebx, dword [esp + 0x10]
mov ecx, dword [esp + 0xc]
lea eax, [ecx + ebx]
cmp eax, dword [esp + 0x4c]
ja 0x42fda1
lea eax, [ebx - 3]
mov dword [esp + 0x68], 1
xor ebx, ebx
mov esi, 0x10
test eax, eax
jle 0x42fda1
nop dword [eax]
lea eax, [ebx + ecx]
mov edx, esi
mov ecx, dword [esp + 0x3c]
inc esi
movzx eax, ax
mov edi, 0x10
sar edx, 4
movzx ecx, word [ecx + eax*2 + 0x20000]
mov eax, ebx
cmp ecx, dword [esp + 0x68]
cmovbe eax, dword [esp + 0x24]
cmova esi, edi
mov edi, ecx
mov dword [esp + 0x24], eax
cmovbe edi, dword [esp + 0x68]
add ebx, edx
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0xc]
add eax, 0xfffffffd
mov dword [esp + 0x68], edi
cmp ebx, eax
jl 0x42fd30
mov ebx, dword [esp + 0x24]
mov dword [esp + 0x24], ebx
cmp edi, 1
jbe 0x42fe30
mov edx, ecx
cmp edi, edx
ja 0x430035
sub edx, edi
jmp 0x42fe60
mov ecx, dword [esp + 0xc]
mov ebx, dword [esp + 0x24]
mov edx, dword [esp + 0x3c]
movzx esi, cx
mov eax, esi
cmp word [edx + eax*2 + 0x20000], 1
jne 0x42fe48
test ebx, ebx
jne 0x42fe48
mov edi, dword [esp + 0x80]
lea ebx, [ecx - 1]
mov dword [esp + 0x68], ebx
test edi, edi
jne 0x42fe79
mov ecx, dword [esp + 0x14]
xor ebx, ebx
mov eax, ecx
mov edx, ecx
shr eax, 0x18
cmp cl, al
movzx eax, cx
sete bl
shr edx, 0x10
xor ecx, ecx
cmp eax, edx
sete cl
test ecx, ebx
je 0x42fe39
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x28]
push dword [esp + 0x14]
mov dword [esp + 0x84], 2
lea ecx, [ecx + 4]
lea edx, [edx - 5]
call fcn.0042e690
mov ebx, dword [esp + 0x6c]
add esp, 4
add eax, 4
mov dword [esp + 0x6c], eax
jmp 0x42fe7e
mov ecx, dword [esp + 0xc]
jmp 0x42fda5
mov dword [esp + 0x80], 1
mov ebx, dword [esp + 0x24]
mov ecx, dword [esp + 0x3c]
lea eax, [ebx + esi]
mov edx, dword [esp + 0xc]
movzx eax, ax
movzx eax, word [ecx + eax*2 + 0x20000]
sub edx, eax
mov edi, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0xc], edx
cmp edx, ecx
jae 0x42fa90
jmp 0x430039
cmp edi, 2
jne 0x42fe44
cmp ebx, dword [esp + 0x1c]
jb 0x42fe44
mov ecx, dword [esp + 0x18]
mov eax, ecx
sub eax, ebx
dec eax
cmp eax, 3
jb 0x42fe44
mov edi, dword [esp + 0x30]
mov edx, dword [esp + 0x14]
sub edi, ecx
cmp ebx, ecx
cmovb edi, dword [esp + 0x8c]
add edi, ebx
cmp dword [edi], edx
jne 0x42fe44
mov eax, dword [esp + 0x28]
add eax, 0xfffffffb
cmp ebx, ecx
push edx
cmovb eax, dword [esp + 0x30]
lea ecx, [edi + 4]
mov edx, eax
mov dword [esp + 0x10], eax
lfence
call fcn.0042e690
mov ecx, dword [esp + 0x1c]
add esp, 4
lea esi, [eax + 4]
cmp ebx, ecx
jae 0x42ff2d
lea eax, [esi + edi]
cmp eax, dword [esp + 0xc]
jne 0x42ff2d
mov eax, dword [esp + 0x14]
mov ecx, esi
and ecx, 3
shl ecx, 3
lfence
test ecx, ecx
je 0x42fef8
rol eax, cl
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x30]
push eax
lea edx, [edx - 5]
call fcn.0042e690
mov edx, dword [esp + 0x34]
add esp, 4
add esi, eax
mov ecx, edi
cmp ebx, dword [esp + 0x18]
push dword [esp + 0x14]
cmovb edx, dword [esp + 0x48]
call fcn.0042e6e0
add esp, 4
mov ebx, eax
jmp 0x42ff8a
mov edx, dword [esp + 0x30]
cmp ebx, ecx
push dword [esp + 0x14]
cmovb edx, dword [esp + 0x48]
mov ecx, edi
call fcn.0042e6e0
mov ebx, eax
add esp, 4
mov eax, dword [esp + 0x18]
cmp dword [esp + 0x68], eax
jb 0x42ff8a
sub edi, ebx
cmp edi, dword [esp + 0x30]
jne 0x42ff8a
cmp dword [esp + 0x5c], eax
jae 0x42ff8a
mov eax, dword [esp + 0x14]
mov ecx, ebx
neg ecx
and ecx, 3
shl ecx, 3
lfence
test ecx, ecx
je 0x42ff77
rol eax, cl
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x2c]
push eax
call fcn.0042e6e0
add esp, 4
add ebx, eax
mov edi, dword [esp + 0x68]
mov edx, esi
mov ecx, dword [esp + 0x6c]
mov eax, edi
sub eax, ebx
mov ebx, dword [esp + 0x1c]
cmp eax, ebx
cmova ebx, eax
sub edx, ebx
mov dword [esp + 0xc], ebx
add edx, edi
cmp edx, ecx
jb 0x42ffcb
cmp esi, ecx
ja 0x42ffcb
sub esi, ecx
add esi, edi
mov edi, dword [esp + 0x18]
mov eax, edi
mov edx, edi
sub eax, esi
dec eax
cmp eax, 3
cmovae edx, esi
jmp 0x42fe64
mov edi, dword [esp + 0x18]
mov ecx, edi
sub ecx, ebx
lea eax, [ecx - 1]
cmp eax, 3
jae 0x42ffe2
mov edx, edi
jmp 0x42fe64
mov eax, dword [esp + 0x6c]
cmp edx, eax
cmovb eax, edx
cmp dword [esp + 0x10], eax
jae 0x430017
mov esi, dword [esp + 0x30]
sub ecx, esi
add ecx, dword [esp + 0x20]
cmp ecx, 0xffff
ja 0x430035
mov edx, dword [esp + 0xc]
mov ebx, edx
sub ebx, edi
mov dword [esp + 0x10], eax
add ebx, esi
mov dword [esp + 0x60], ebx
jmp 0x43001b
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x3c]
movzx eax, dx
movzx eax, word [ecx + eax*2 + 0x20000]
cmp eax, edx
ja 0x430035
sub edx, eax
jmp 0x42fe64
mov ecx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x4c]
cmp dword [ebp + 0x24], 1
jne 0x4301b7
mov esi, dword [esp + 0x50]
test esi, esi
jle 0x4301b7
mov eax, ebx
sub eax, ecx
cmp eax, 0xffff
jae 0x4301b7
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x40]
lfence
imul eax, dword [eax], 0x9e3779b1
mov edx, dword [edi + 0x40000]
sub edx, dword [edi + 0x40004]
add edx, dword [edi + 0x4000c]
sub ecx, edx
mov dword [esp + 0x5c], edx
shr eax, 0x11
mov ebx, dword [edi + eax*4]
add ecx, ebx
mov eax, dword [esp + 0x4c]
sub eax, ecx
mov dword [esp + 0x1c], ecx
cmp eax, 0xffff
ja 0x4301b7
mov eax, esi
dec esi
mov dword [esp + 0x50], esi
test eax, eax
je 0x4301b7
mov ecx, dword [edi + 0x40004]
sub ecx, dword [edi + 0x4000c]
mov eax, dword [esp + 0x14]
add ecx, ebx
cmp dword [ecx], eax
jne 0x43018f
mov eax, dword [esp + 0x20]
sub edx, ebx
mov esi, dword [esp + 0x28]
add edx, eax
add esi, 0xfffffffb
cmp edx, esi
cmova edx, esi
lea esi, [eax + 4]
add ecx, 4
mov dword [esp + 0x2c], esi
lea edi, [edx - 3]
cmp esi, edi
jae 0x430124
lfence
mov eax, dword [ecx]
xor eax, dword [esi]
jne 0x430177
add esi, 4
add ecx, 4
cmp esi, edi
jae 0x430124
nop dword [eax]
mov eax, dword [ecx]
xor eax, dword [esi]
jne 0x430180
add esi, 4
add ecx, 4
cmp esi, edi
jb 0x430110
lea eax, [edx - 1]
cmp esi, eax
jae 0x430139
mov ax, word [ecx]
cmp ax, word [esi]
jne 0x430139
add esi, 2
add ecx, 2
cmp esi, edx
jae 0x430144
mov al, byte [ecx]
cmp al, byte [esi]
jne 0x430144
inc esi
mov eax, esi
sub eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x1c]
add eax, 4
mov edx, dword [esp + 0x5c]
mov esi, dword [esp + 0x50]
mov edi, dword [esp + 0x40]
cmp eax, dword [esp + 0x10]
jle 0x430193
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x30]
sub eax, dword [esp + 0x18]
add eax, ecx
mov dword [esp + 0x60], eax
jmp 0x430193
mov ecx, eax
call fcn.0042e600
jmp 0x43014a
mov ecx, eax
call fcn.0042e600
sub esi, dword [esp + 0x2c]
add eax, esi
jmp 0x43014a
mov ecx, dword [esp + 0x1c]
movzx eax, bx
movzx eax, word [edi + eax*2 + 0x20000]
sub ecx, eax
sub ebx, eax
mov eax, dword [esp + 0x4c]
sub eax, ecx
mov dword [esp + 0x1c], ecx
cmp eax, 0xffff
jbe 0x4300a8
mov edx, dword [esp + 0x10]
cmp edx, 3
jmp 0x430a73
cmp eax, esi
jle 0x430e25
mov esi, dword [esp + 0x3c]
mov ecx, edi
sub ecx, edx
mov dword [esp + 0x78], 0
lfence
mov dword [esp + 0x90], ecx
mov edi, dword [esi + 0x4000c]
mov eax, dword [esi + 0x4001c]
mov edx, dword [esi + 0x40004]
mov esi, dword [esi + 0x40010]
mov dword [esp + 0xc], ecx
mov ecx, edi
mov dword [esp + 0x80], eax
sub ecx, edx
add ecx, ebx
mov dword [esp + 0x2c], esi
mov dword [esp + 0x24], ecx
lea eax, [esi + 0x10000]
add ecx, 0xffff0001
mov dword [esp + 0x74], 0
cmp eax, dword [esp + 0x24]
mov ebx, esi
mov eax, dword [esp + 0x3c]
cmovbe ebx, ecx
mov dword [esp + 0x60], 0
mov ecx, dword [ebp + 0x14]
mov dword [esp + 0x30], edx
mov eax, dword [eax + 0x40008]
mov dword [esp + 0x44], eax
sub eax, esi
mov dword [esp + 0x8c], eax
xor esi, esi
add eax, edi
mov dword [esp + 0x68], esi
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x14], edi
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x50], ecx
mov eax, dword [eax]
mov dword [esp + 0x18], eax
xor eax, eax
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x1c], 0
mov esi, dword [eax + 0x40014]
cmp esi, dword [esp + 0x24]
jae 0x4302f7
mov edi, edx
sub edi, dword [esp + 0x14]
lfence
nop word [eax + eax]
imul eax, dword [esi + edi], 0x9e3779b1
mov ecx, dword [esp + 0x3c]
mov ebx, dword [esp + 0x3c]
shr eax, 0x11
lea edx, [ecx + eax*4]
mov ecx, esi
sub ecx, dword [edx]
mov eax, 0xffff
cmp ecx, 0xffff
cmova ecx, eax
movzx eax, si
mov word [ebx + eax*2 + 0x20000], cx
mov dword [edx], esi
inc esi
cmp esi, dword [esp + 0x24]
jb 0x4302b0
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
mov dword [edx + 0x40014], esi
imul eax, dword [eax], 0x9e3779b1
shr eax, 0x11
mov edx, dword [edx + eax*4]
mov dword [esp + 0x10], edx
cmp edx, ebx
jb 0x4308e3
lfence
test ecx, ecx
jle 0x4308e3
xor ebx, ebx
dec ecx
mov dword [esp + 0x50], ecx
cmp dword [ebp + 0x28], ebx
je 0x430345
mov eax, esi
sub eax, edx
cmp eax, 8
jb 0x430591
cmp edx, edi
jb 0x43041d
mov ecx, dword [esp + 0xc]
mov eax, edx
mov edx, dword [esp + 0x20]
sub eax, edi
mov edi, dword [esp + 0x30]
add edi, eax
mov eax, dword [esp + 0xc]
mov ax, word [eax + edx - 1]
cmp ax, word [edi + ecx - 1]
jne 0x430595
mov eax, dword [esp + 0x18]
cmp dword [edi], eax
jne 0x430595
lea esi, [edx + 4]
mov edx, dword [esp + 0x28]
add edx, 0xfffffffb
lea ecx, [edi + 4]
add edx, 0xfffffffd
mov ebx, esi
cmp esi, edx
jae 0x4303c0
lfence
mov eax, dword [ecx]
xor eax, dword [esi]
jne 0x430407
add esi, 4
add ecx, 4
cmp esi, edx
jae 0x4303c0
nop dword [eax]
mov eax, dword [ecx]
xor eax, dword [esi]
jne 0x430410
add esi, 4
add ecx, 4
cmp esi, edx
jb 0x4303b0
mov edx, dword [esp + 0x28]
add edx, 0xfffffffb
lea eax, [edx - 1]
cmp esi, eax
jae 0x4303dc
mov ax, word [ecx]
cmp ax, word [esi]
jne 0x4303dc
add esi, 2
add ecx, 2
cmp esi, edx
jae 0x4303e7
mov al, byte [ecx]
cmp al, byte [esi]
jne 0x4303e7
inc esi
mov eax, esi
sub eax, ebx
mov ecx, dword [esp + 0xc]
lea ebx, [eax + 4]
cmp ebx, ecx
jle 0x430597
mov dword [esp + 0xc], ebx
mov dword [esp + 0x60], edi
jmp 0x4305a1
mov ecx, eax
call fcn.0042e600
jmp 0x4303eb
mov ecx, eax
call fcn.0042e600
sub esi, ebx
add eax, esi
jmp 0x4303eb
mov ecx, edx
lea eax, [edi - 4]
sub ecx, dword [esp + 0x2c]
add ecx, dword [esp + 0x44]
cmp edx, eax
ja 0x430591
mov eax, dword [esp + 0x18]
cmp dword [ecx], eax
jne 0x430591
mov eax, dword [esp + 0x20]
sub edi, edx
mov edx, dword [esp + 0x28]
add edi, eax
add edx, 0xfffffffb
cmp edi, edx
lea esi, [eax + 4]
cmova edi, edx
mov ebx, esi
add ecx, 4
lea edx, [edi - 3]
cmp esi, edx
jae 0x430494
lfence
mov eax, dword [esi]
xor eax, dword [ecx]
jne 0x430561
add esi, 4
add ecx, 4
cmp esi, edx
jae 0x430494
nop dword [eax + eax]
mov eax, dword [esi]
xor eax, dword [ecx]
jne 0x43056d
add esi, 4
add ecx, 4
cmp esi, edx
jb 0x430480
lea eax, [edi - 1]
cmp esi, eax
jae 0x4304a9
mov ax, word [ecx]
cmp ax, word [esi]
jne 0x4304a9
add esi, 2
add ecx, 2
cmp esi, edi
jae 0x4304b4
mov al, byte [ecx]
cmp al, byte [esi]
jne 0x4304b4
inc esi
mov eax, esi
sub eax, ebx
mov esi, dword [esp + 0x20]
lea ebx, [eax + 4]
add esi, ebx
cmp esi, edi
jne 0x430541
mov edx, dword [esp + 0x28]
add edx, 0xfffffffb
cmp edi, edx
jae 0x430541
mov eax, dword [esp + 0x30]
add edx, 0xfffffffd
mov ecx, eax
mov edi, esi
cmp esi, edx
jae 0x430514
lfence
mov ecx, dword [esi]
xor ecx, dword [eax]
jne 0x43057d
add esi, 4
lea ecx, [eax + 4]
cmp esi, edx
jae 0x430514
nop
mov eax, dword [ecx]
xor eax, dword [esi]
jne 0x430584
add esi, 4
add ecx, 4
cmp esi, edx
jb 0x430500
mov edx, dword [esp + 0x28]
add edx, 0xfffffffb
lea eax, [edx - 1]
cmp esi, eax
jae 0x430530
mov ax, word [ecx]
cmp ax, word [esi]
jne 0x430530
add esi, 2
add ecx, 2
cmp esi, edx
jae 0x43053b
mov al, byte [ecx]
cmp al, byte [esi]
jne 0x43053b
inc esi
mov eax, esi
sub eax, edi
add ebx, eax
mov ecx, dword [esp + 0xc]
cmp ebx, ecx
jle 0x430597
mov ecx, dword [esp + 0x10]
mov edx, ecx
sub edx, dword [esp + 0x14]
add edx, dword [esp + 0x30]
mov dword [esp + 0xc], ebx
mov dword [esp + 0x60], edx
jmp 0x4305a5
mov ecx, eax
call fcn.0042e600
jmp 0x4304b8
mov ecx, eax
call fcn.0042e600
sub esi, ebx
add eax, esi
jmp 0x4304b8
call fcn.0042e600
jmp 0x43053f
mov ecx, eax
call fcn.0042e600
sub esi, edi
add eax, esi
jmp 0x43053f
mov ecx, dword [esp + 0xc]
cmp ebx, ecx
jne 0x43063d
mov ebx, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
lea eax, [ecx + ebx]
cmp eax, dword [esp + 0x24]
ja 0x430641
lea eax, [ebx - 3]
mov dword [esp + 0x40], 1
xor ebx, ebx
mov edi, 0x10
test eax, eax
jle 0x430641
nop dword [eax]
lea eax, [ebx + ecx]
mov edx, edi
mov ecx, dword [esp + 0x3c]
inc edi
movzx eax, ax
mov esi, 0x10
sar edx, 4
movzx ecx, word [ecx + eax*2 + 0x20000]
mov eax, ebx
cmp ecx, dword [esp + 0x40]
cmovbe eax, dword [esp + 0x1c]
cmova edi, esi
mov esi, ecx
mov dword [esp + 0x1c], eax
cmovbe esi, dword [esp + 0x40]
add ebx, edx
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
add eax, 0xfffffffd
mov dword [esp + 0x40], esi
cmp ebx, eax
jl 0x4305d0
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x1c], ebx
cmp esi, 1
jbe 0x4306ca
mov edx, ecx
cmp esi, edx
ja 0x4308d7
sub edx, esi
jmp 0x4306f7
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0x1c]
mov edx, dword [esp + 0x3c]
movzx esi, cx
mov eax, esi
cmp word [edx + eax*2 + 0x20000], 1
jne 0x4306df
test ebx, ebx
jne 0x4306df
mov edi, dword [esp + 0x6c]
lea ebx, [ecx - 1]
mov dword [esp + 0x40], ebx
test edi, edi
jne 0x430718
mov ecx, dword [esp + 0x18]
xor ebx, ebx
mov eax, ecx
mov edx, ecx
shr eax, 0x18
cmp cl, al
movzx eax, cx
sete bl
shr edx, 0x10
xor ecx, ecx
cmp eax, edx
sete cl
test ecx, ebx
je 0x4306d3
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x28]
push dword [esp + 0x18]
mov dword [esp + 0x70], 2
lea ecx, [ecx + 4]
lea edx, [edx - 5]
call fcn.0042e690
mov ebx, dword [esp + 0x44]
add esp, 4
add eax, 4
mov dword [esp + 0x68], eax
jmp 0x43071d
mov ecx, dword [esp + 0x10]
jmp 0x430645
mov dword [esp + 0x6c], 1
mov ebx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x3c]
lea eax, [esi + ebx]
mov edx, dword [esp + 0x10]
movzx eax, ax
movzx eax, word [ecx + eax*2 + 0x20000]
sub edx, eax
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x50]
mov esi, dword [esp + 0x24]
mov dword [esp + 0x10], edx
cmp edx, ebx
jae 0x430324
jmp 0x4308e3
cmp edi, 2
jne 0x4306db
cmp ebx, dword [esp + 0x4c]
jb 0x4306db
mov ecx, dword [esp + 0x14]
mov eax, ecx
sub eax, ebx
dec eax
cmp eax, 3
jb 0x4306db
mov edi, dword [esp + 0x30]
mov edx, dword [esp + 0x18]
sub edi, ecx
cmp ebx, ecx
cmovb edi, dword [esp + 0x8c]
add edi, ebx
cmp dword [edi], edx
jne 0x4306db
mov eax, dword [esp + 0x28]
add eax, 0xfffffffb
cmp ebx, ecx
push edx
cmovb eax, dword [esp + 0x60]
lea ecx, [edi + 4]
mov edx, eax
mov dword [esp + 0x14], eax
lfence
call fcn.0042e690
mov ecx, dword [esp + 0x18]
add esp, 4
lea esi, [eax + 4]
cmp ebx, ecx
jae 0x4307cf
lea eax, [esi + edi]
cmp eax, dword [esp + 0x10]
jne 0x4307cf
mov eax, dword [esp + 0x18]
mov ecx, esi
and ecx, 3
shl ecx, 3
lfence
test ecx, ecx
je 0x430797
rol eax, cl
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x30]
push eax
lea edx, [edx - 5]
call fcn.0042e690
mov edx, dword [esp + 0x34]
add esp, 4
add esi, eax
mov ecx, edi
cmp ebx, dword [esp + 0x14]
push dword [esp + 0x18]
cmovb edx, dword [esp + 0x48]
call fcn.0042e6e0
add esp, 4
mov ebx, eax
jmp 0x43082c
mov edx, dword [esp + 0x30]
cmp ebx, ecx
push dword [esp + 0x18]
cmovb edx, dword [esp + 0x48]
mov ecx, edi
call fcn.0042e6e0
mov ebx, eax
add esp, 4
mov eax, dword [esp + 0x14]
cmp dword [esp + 0x40], eax
jb 0x43082c
sub edi, ebx
cmp edi, dword [esp + 0x30]
jne 0x43082c
cmp dword [esp + 0x2c], eax
jae 0x43082c
mov eax, dword [esp + 0x18]
mov ecx, ebx
neg ecx
and ecx, 3
shl ecx, 3
lfence
test ecx, ecx
je 0x430819
rol eax, cl
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x5c]
push eax
call fcn.0042e6e0
add esp, 4
add ebx, eax
mov edi, dword [esp + 0x40]
mov edx, esi
mov ecx, dword [esp + 0x68]
mov eax, edi
sub eax, ebx
mov ebx, dword [esp + 0x4c]
cmp eax, ebx
cmova ebx, eax
sub edx, ebx
mov dword [esp + 0x10], ebx
add edx, edi
cmp edx, ecx
jb 0x43086d
cmp esi, ecx
ja 0x43086d
sub esi, ecx
add esi, edi
mov edi, dword [esp + 0x14]
mov eax, edi
mov edx, edi
sub eax, esi
dec eax
cmp eax, 3
cmovae edx, esi
jmp 0x4306fb
mov edi, dword [esp + 0x14]
mov ecx, edi
sub ecx, ebx
lea eax, [ecx - 1]
cmp eax, 3
jae 0x430884
mov edx, edi
jmp 0x4306fb
mov eax, dword [esp + 0x68]
cmp edx, eax
cmovb eax, edx
cmp dword [esp + 0xc], eax
jae 0x4308b9
mov esi, dword [esp + 0x30]
sub ecx, esi
add ecx, dword [esp + 0x20]
cmp ecx, 0xffff
ja 0x4308d7
mov edx, dword [esp + 0x10]
mov ebx, edx
sub ebx, edi
mov dword [esp + 0xc], eax
add ebx, esi
mov dword [esp + 0x60], ebx
jmp 0x4308bd
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x3c]
movzx eax, dx
movzx eax, word [ecx + eax*2 + 0x20000]
cmp eax, edx
ja 0x4308d7
sub edx, eax
jmp 0x4306fb
mov ebx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x50]
mov esi, dword [esp + 0x24]
cmp dword [ebp + 0x24], 1
jne 0x430a68
test ecx, ecx
jle 0x430a68
mov eax, esi
sub eax, ebx
cmp eax, 0xffff
jae 0x430a68
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x80]
lfence
imul eax, dword [eax], 0x9e3779b1
mov edx, dword [edi + 0x40000]
sub edx, dword [edi + 0x40004]
add edx, dword [edi + 0x4000c]
mov dword [esp + 0x5c], edx
shr eax, 0x11
mov ebx, dword [edi + eax*4]
mov ecx, ebx
sub ecx, edx
mov eax, esi
add ecx, dword [esp + 0x4c]
sub eax, ecx
mov dword [esp + 0x44], ecx
cmp eax, 0xffff
ja 0x430a68
nop
mov ecx, dword [esp + 0x50]
mov eax, ecx
dec ecx
mov dword [esp + 0x50], ecx
test eax, eax
je 0x430a68
mov eax, dword [esp + 0x18]
mov ecx, ebx
sub ecx, dword [edi + 0x4000c]
add ecx, dword [edi + 0x40004]
cmp dword [ecx], eax
jne 0x430a42
mov eax, dword [esp + 0x20]
sub edx, ebx
mov esi, dword [esp + 0x28]
add edx, eax
add esi, 0xfffffffb
cmp edx, esi
cmova edx, esi
lea esi, [eax + 4]
add ecx, 4
mov dword [esp + 0x2c], esi
lea edi, [edx - 3]
cmp esi, edi
jae 0x4309d4
lfence
mov eax, dword [esi]
xor eax, dword [ecx]
jne 0x430a2a
add esi, 4
add ecx, 4
cmp esi, edi
jae 0x4309d4
nop dword [eax]
mov eax, dword [esi]
xor eax, dword [ecx]
jne 0x430a33
add esi, 4
add ecx, 4
cmp esi, edi
jb 0x4309c0
lea eax, [edx - 1]
cmp esi, eax
jae 0x4309e9
mov ax, word [ecx]
cmp ax, word [esi]
jne 0x4309e9
add esi, 2
add ecx, 2
cmp esi, edx
jae 0x4309f4
mov al, byte [ecx]
cmp al, byte [esi]
jne 0x4309f4
inc esi
mov eax, esi
sub eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x44]
add eax, 4
mov edx, dword [esp + 0x5c]
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x80]
cmp eax, dword [esp + 0xc]
jle 0x430a46
mov dword [esp + 0xc], eax
mov eax, ecx
sub eax, dword [esp + 0x14]
add eax, dword [esp + 0x30]
mov dword [esp + 0x60], eax
jmp 0x430a46
mov ecx, eax
call fcn.0042e600
jmp 0x4309fa
mov ecx, eax
call fcn.0042e600
sub esi, dword [esp + 0x2c]
add eax, esi
jmp 0x4309fa
mov ecx, dword [esp + 0x44]
movzx eax, bx
movzx eax, word [edi + eax*2 + 0x20000]
sub ecx, eax
sub ebx, eax
mov eax, esi
mov dword [esp + 0x44], ecx
sub eax, ecx
cmp eax, 0xffff
jbe 0x430950
mov edx, dword [esp + 0xc]
cmp edx, dword [esp + 0x90]
jle 0x430aa7
cmp dword [ebp + 0x28], 0
je 0x430a95
xor ecx, ecx
cmp edx, 0x24
setle cl
xor eax, eax
cmp edx, 0x12
setg al
test eax, ecx
mov eax, 0x12
cmovne edx, eax
mov ebx, dword [esp + 0x20]
sub ebx, dword [esp + 0x60]
mov dword [esp + 0x74], edx
mov dword [esp + 0x78], ebx
jmp 0x430aad
mov edx, dword [esp + 0x74]
mov ebx, edx
mov ecx, edx
mov dword [esp + 0x94], 0
mov esi, ebx
test ecx, ecx
je 0x430e1d
mov ebx, dword [esp + 0x58]
cmp ecx, dword [esp + 0x98]
ja 0x430ec8
lea eax, [ebx + ecx]
cmp eax, 0x1000
jge 0x430ec8
mov eax, dword [esp + 0x7c]
mov esi, dword [eax + 0xc]
mov edi, esi
lea ebx, [esi - 0xf]
cmp esi, 0xf
jl 0x430b0a
mov eax, 0x80808081
imul ebx
add edx, ebx
sar edx, 7
mov edi, edx
shr edi, 0x1f
inc edi
add edi, edx
add edi, esi
lea ecx, [esi + 1]
mov eax, ecx
cmp ecx, 0xf
jl 0x430b32
add ecx, 0xfffffff1
mov eax, 0x80808081
imul ecx
add edx, ecx
lea ecx, [esi + 1]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, 2
add eax, edx
add eax, esi
mov edx, dword [esp + 0x70]
sub edx, edi
mov edi, dword [esp + 0x54]
add edx, eax
mov eax, dword [esp + 0x58]
inc eax
shl eax, 4
add edi, eax
cmp edx, dword [edi]
jge 0x430b5f
mov dword [edi + 8], 1
mov dword [edi + 4], 0
mov dword [edi + 0xc], ecx
mov dword [edi], edx
mov dword [esp + 0x2c], esi
cmp esi, 0xf
jl 0x430b82
mov eax, 0x80808081
imul ebx
add edx, ebx
sar edx, 7
mov eax, edx
shr eax, 0x1f
inc eax
add eax, edx
add eax, esi
mov dword [esp + 0x2c], eax
lea edx, [ecx + 1]
mov dword [esp + 0x70], edx
mov eax, edx
cmp edx, 0xf
jl 0x430bb2
add ecx, 0xfffffff2
mov eax, 0x80808081
imul ecx
add edx, ecx
lea ecx, [esi + 1]
sar edx, 7
mov eax, edx
add edx, 3
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x70]
add eax, esi
mov ebx, dword [esp + 0x7c]
sub eax, dword [esp + 0x2c]
mov ebx, dword [ebx]
add eax, ebx
cmp eax, dword [edi + 0x10]
jge 0x430bdd
mov dword [edi + 0x10], eax
mov eax, dword [esp + 0x7c]
mov dword [edi + 0x18], 1
mov dword [edi + 0x14], 0
mov dword [edi + 0x1c], edx
mov ebx, dword [eax]
mov dword [esp + 0x2c], esi
cmp esi, 0xf
jl 0x430c06
mov eax, 0x80808081
lea edx, [esi - 0xf]
imul edx
lea eax, [esi - 0xf]
add edx, eax
sar edx, 7
mov eax, edx
shr eax, 0x1f
inc eax
add eax, edx
add eax, esi
mov dword [esp + 0x2c], eax
lea edx, [ecx + 2]
mov dword [esp + 0x70], edx
mov eax, edx
cmp edx, 0xf
jl 0x430c33
add ecx, 0xfffffff3
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
add edx, 4
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x70]
add eax, esi
sub ebx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x54]
add ebx, eax
mov eax, dword [esp + 0x58]
add eax, 3
add eax, eax
cmp ebx, dword [ecx + eax*8]
jge 0x430c5f
mov dword [edi + 0x28], 1
mov dword [edi + 0x24], 0
mov dword [edi + 0x2c], edx
mov dword [ecx + eax*8], ebx
mov esi, 4
cmp dword [esp + 0x74], esi
jl 0x430da7
mov ecx, dword [esp + 0x7c]
mov edx, 0xffffffed
mov edi, dword [esp + 0x58]
sub edx, edi
mov dword [esp + 0x5c], edx
lea eax, [ecx + 0x44]
mov dword [esp + 0x40], eax
nop dword [eax + eax]
cmp dword [ecx + 8], 1
jne 0x430d11
mov ebx, dword [ecx + 0xc]
cmp edi, ebx
jle 0x430cb4
mov ecx, dword [esp + 0x54]
mov eax, edi
sub eax, ebx
add eax, eax
mov eax, dword [ecx + eax*8]
mov dword [esp + 0x2c], eax
jmp 0x430cbc
mov dword [esp + 0x2c], 0
mov ecx, ebx
cmp ebx, 0xf
jl 0x430ce0
lea ecx, [ebx - 0xf]
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
inc edx
shr ecx, 0x1f
add ecx, edx
mov edx, dword [esp + 0x5c]
add ecx, ebx
add ecx, 3
add edi, esi
mov dword [esp + 0x70], ecx
cmp esi, 0x13
jl 0x430d0b
lea ecx, [edx + edi]
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [esp + 0x70]
sar edx, 7
inc ecx
mov eax, edx
shr eax, 0x1f
add eax, edx
add ecx, eax
add ecx, dword [esp + 0x2c]
jmp 0x430d3e
xor ebx, ebx
add edi, esi
lea eax, [ebx + 3]
cmp esi, 0x13
jl 0x430d3a
lea ecx, [edx + edi]
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [esp + 0x7c]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, 4
add eax, edx
mov ecx, dword [ecx]
add ecx, eax
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x40]
add eax, 3
cmp edi, eax
jg 0x430d57
mov eax, dword [edx - 4]
sub eax, dword [ebp + 0x28]
cmp ecx, eax
jg 0x430d87
mov eax, dword [esp + 0x74]
cmp esi, eax
jne 0x430d76
mov eax, dword [esp + 0x48]
cmp eax, edi
cmovl eax, edi
mov edi, eax
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x74]
mov dword [esp + 0x48], edi
mov edi, dword [esp + 0x78]
mov dword [edx + 4], esi
mov dword [edx], edi
mov dword [edx + 8], ebx
mov dword [edx - 4], ecx
jmp 0x430d8b
mov eax, dword [esp + 0x74]
mov edi, dword [esp + 0x58]
add edx, 0x10
mov ecx, dword [esp + 0x7c]
inc esi
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x5c]
cmp esi, eax
jle 0x430c90
mov edi, dword [esp + 0x48]
mov ecx, edi
mov esi, dword [esp + 0x54]
add ecx, ecx
lea edx, [edi + 1]
shl edx, 4
add edx, esi
mov dword [edx + 8], 1
mov dword [edx + 4], 0
mov dword [edx + 0xc], 1
mov eax, dword [esi + ecx*8]
inc eax
mov dword [edx + 0x18], 1
mov dword [edx], eax
mov dword [edx + 0x14], 0
mov dword [edx + 0x1c], 2
mov eax, dword [esi + ecx*8]
add eax, 2
mov dword [edx + 0x28], 1
mov dword [edx + 0x10], eax
lea eax, [edi + 3]
mov dword [edx + 0x24], 0
mov dword [edx + 0x2c], 3
mov ecx, dword [esi + ecx*8]
mov edx, dword [esp + 0x58]
add ecx, 3
add eax, eax
mov dword [esi + eax*8], ecx
jmp 0x430e29
mov edx, dword [esp + 0x58]
mov edi, dword [esp + 0x48]
mov esi, dword [esp + 0x54]
inc edx
mov dword [esp + 0x58], edx
cmp edx, edi
jl 0x42f904
mov eax, edi
mov ebx, edi
add eax, eax
mov ecx, dword [esi + eax*8 + 8]
sub ebx, ecx
mov esi, dword [esi + eax*8 + 4]
mov edi, dword [esp + 0x54]
mov eax, ebx
add eax, eax
mov edx, dword [edi + eax*8 + 8]
mov edi, dword [edi + eax*8 + 4]
mov dword [esp + 0x70], edi
mov edi, dword [esp + 0x54]
mov dword [edi + eax*8 + 8], ecx
mov ecx, edi
mov edi, dword [esp + 0x70]
mov dword [ecx + eax*8 + 4], esi
mov esi, edx
cmp edx, ebx
jg 0x430e93
sub ebx, edx
mov eax, ebx
shl eax, 4
add ecx, eax
mov edx, dword [ecx + 8]
mov eax, dword [ecx + 4]
mov dword [ecx + 8], esi
mov esi, edx
mov dword [ecx + 4], edi
mov edi, eax
mov ecx, dword [esp + 0x54]
cmp edx, ebx
jle 0x430e72
xor ebx, ebx
cmp dword [esp + 0x48], ebx
jle 0x431088
nop
mov eax, ebx
add eax, eax
mov esi, dword [ecx + eax*8 + 8]
mov ecx, dword [ecx + eax*8 + 4]
mov dword [esp + 0x5c], esi
mov dword [esp + 0x6c], ecx
cmp esi, 1
jne 0x430ed4
mov edi, dword [esp + 0x34]
mov edx, dword [esp + 0x64]
inc edi
inc ebx
jmp 0x431074
lea eax, [ebx + 1]
mov dword [esp + 0x48], eax
jmp 0x430e46
mov edx, dword [esp + 0x38]
add ebx, esi
mov eax, dword [esp + 0x34]
mov edi, edx
sub eax, ecx
mov dword [esp + 0x44], edx
mov ecx, dword [esp + 0x34]
sub ecx, dword [esp + 0x64]
mov dword [esp + 0x40], edx
inc edx
cmp dword [ebp + 0x1c], 0
mov dword [esp + 0x90], ebx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x8c], edi
mov dword [esp + 0x38], edx
mov dword [esp + 0x70], ecx
je 0x430f39
mov eax, 0x80808081
mul ecx
mov eax, dword [esp + 0x38]
shr edx, 7
add eax, 8
add edx, ecx
add eax, edx
cmp eax, dword [esp + 0x88]
ja 0x4310eb
mov edx, dword [esp + 0x38]
cmp ecx, 0xf
jb 0x430f90
lea ebx, [ecx - 0xf]
mov byte [edi], 0xf0
cmp ebx, 0xff
jb 0x430f80
mov eax, 0x80808081
mul ebx
mov eax, dword [esp + 0x38]
mov esi, edx
shr esi, 7
push esi
push 0xff
push eax
call fcn.0048ba70
mov edx, dword [esp + 0x44]
add esp, 0xc
add edx, esi
sub ebx, 0xff
sub esi, 1
jne 0x430f71
mov ecx, dword [esp + 0x70]
mov byte [edx], bl
inc edx
mov ebx, dword [esp + 0x90]
mov dword [esp + 0x38], edx
jmp 0x430f97
mov al, cl
shl al, 4
mov byte [edi], al
mov edi, dword [esp + 0x38]
mov edx, dword [esp + 0x64]
sub edx, edi
lea esi, [ecx + edi]
mov eax, dword [edx + edi]
mov ecx, dword [edx + edi + 4]
mov dword [edi], eax
mov dword [edi + 4], ecx
add edi, 8
cmp edi, esi
jb 0x430fa4
mov eax, dword [esp + 0x34]
mov ecx, esi
sub eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x5c]
mov edi, dword [esp + 0x8c]
mov word [ecx], ax
add ecx, 2
cmp dword [ebp + 0x1c], 0
mov dword [esp + 0x38], ecx
lea ecx, [esi - 4]
je 0x430fff
mov eax, 0x80808081
mul ecx
mov eax, dword [esp + 0x38]
shr edx, 7
add eax, 6
add eax, edx
cmp eax, dword [esp + 0x88]
ja 0x4310eb
mov eax, dword [esp + 0x40]
mov al, byte [eax]
cmp ecx, 0xf
jb 0x431064
add al, 0xf
sub ecx, 0xf
mov byte [edi], al
cmp ecx, 0x1fe
jb 0x431045
mov eax, 0x80808081
mul ecx
mov eax, dword [esp + 0x38]
shr edx, 8
nop word [eax + eax]
mov word [eax], 0xffff
sub ecx, 0x1fe
add eax, 2
sub edx, 1
jne 0x431030
jmp 0x431049
mov eax, dword [esp + 0x38]
cmp ecx, 0xff
jb 0x43105b
sub ecx, 0xff
mov byte [eax], 0xff
inc eax
mov byte [eax], cl
inc eax
mov dword [esp + 0x38], eax
jmp 0x431068
add cl, al
mov byte [edi], cl
mov edi, dword [esp + 0x34]
add edi, esi
mov edx, edi
mov dword [esp + 0x64], edx
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x34], edi
cmp ebx, dword [esp + 0x48]
jl 0x430ea0
jmp 0x431090
mov edi, dword [esp + 0x34]
mov edx, dword [esp + 0x64]
mov eax, dword [esp + 0x28]
add eax, 0xfffffff4
cmp edi, eax
jbe 0x42ec60
mov ebx, dword [esp + 0x38]
mov esi, dword [esp + 0x28]
mov eax, 0x80808081
sub esi, edx
mov dword [esp + 0x84], esi
lea ecx, [esi + 0xf0]
mul ecx
shr edx, 7
add edx, esi
mov esi, dword [ebp + 0x1c]
cmp esi, 2
jne 0x43129c
mov ecx, dword [esp + 0x88]
mov ebx, dword [esp + 0x38]
add ecx, 5
jmp 0x4312a7
mov esi, dword [esp + 0x48]
mov ecx, dword [esp + 0x34]
jmp 0x4310f9
mov ecx, dword [esp + 0x34]
mov eax, ecx
sub eax, dword [esp + 0x6c]
mov dword [esp + 0x40], eax
cmp dword [ebp + 0x1c], 2
jne 0x431380
mov edi, dword [esp + 0x44]
mov ebx, ecx
sub ebx, dword [esp + 0x64]
mov eax, 0x80808081
mov dword [esp + 0x70], ebx
mov dword [esp + 0x38], edi
lea ecx, [ebx + 0xf0]
mul ecx
mov ecx, dword [esp + 0x88]
shr edx, 7
add ecx, 0xfffffffd
inc edx
add edx, ebx
lea eax, [edx + edi]
cmp eax, ecx
ja 0x431266
sub ecx, edx
sub ecx, edi
imul eax, ecx, 0xff
add eax, 0x12
cmp esi, eax
cmova esi, eax
mov eax, dword [esp + 0x88]
sub eax, edx
mov dword [esp + 0x48], esi
sub eax, edi
add eax, 2
add eax, esi
cmp eax, 0xc
jl 0x431266
lea esi, [edi + 1]
cmp ebx, 0xf
jb 0x4311b4
add ebx, 0xfffffff1
mov byte [edi], 0xf0
cmp ebx, 0xff
jb 0x4311ab
mov eax, 0x80808081
mul ebx
mov edi, edx
shr edi, 7
push edi
push 0xff
push esi
call fcn.0048ba70
add esp, 0xc
add esi, edi
nop
sub ebx, 0xff
sub edi, 1
jne 0x4311a0
mov byte [esi], bl
inc esi
mov ebx, dword [esp + 0x70]
jmp 0x4311bb
mov al, bl
shl al, 4
mov byte [edi], al
mov edi, dword [esp + 0x64]
add ebx, esi
sub edi, esi
mov eax, dword [edi + esi]
mov ecx, dword [edi + esi + 4]
mov dword [esi], eax
mov dword [esi + 4], ecx
add esi, 8
cmp esi, ebx
jb 0x4311c3
mov esi, dword [esp + 0x34]
mov eax, esi
mov edx, dword [esp + 0x48]
sub eax, dword [esp + 0x40]
mov edi, dword [esp + 0x44]
mov word [ebx], ax
add ebx, 2
lea ecx, [edx - 4]
mov dword [esp + 0x38], ebx
mov al, byte [edi]
cmp ecx, 0xf
jb 0x431259
add al, 0xf
sub ecx, 0xf
mov byte [edi], al
cmp ecx, 0x1fe
jb 0x431237
mov eax, 0x80808081
mul ecx
shr edx, 8
nop dword [eax]
mov word [ebx], 0xffff
sub ecx, 0x1fe
add ebx, 2
sub edx, 1
jne 0x431220
mov edx, dword [esp + 0x48]
cmp ecx, 0xff
jb 0x431249
sub ecx, 0xff
mov byte [ebx], 0xff
inc ebx
mov byte [ebx], cl
lea eax, [edx + esi]
inc ebx
mov dword [esp + 0x64], eax
mov dword [esp + 0x38], ebx
jmp 0x43126a
add al, cl
mov byte [edi], al
lea eax, [edx + esi]
mov dword [esp + 0x64], eax
jmp 0x43126a
mov eax, dword [esp + 0x64]
mov ebx, dword [esp + 0x28]
mov esi, dword [ebp + 0x1c]
sub ebx, eax
mov eax, 0x80808081
mov dword [esp + 0x84], ebx
lea ecx, [ebx + 0xf0]
mul ecx
mov ecx, dword [esp + 0x88]
shr edx, 7
add edx, ebx
mov ebx, dword [esp + 0x38]
add ecx, 5
jmp 0x4312a7
test esi, esi
je 0x4312de
mov ecx, dword [esp + 0x88]
lea eax, [ebx + 1]
add eax, edx
cmp eax, ecx
jbe 0x4312de
cmp esi, 1
jne 0x4312c5
mov dword [esp + 0x84], 0
jmp 0x431380
mov edx, ecx
sub edx, ebx
dec edx
lea eax, [edx + 0xf1]
shr eax, 8
sub edx, eax
mov dword [esp + 0x84], edx
jmp 0x4312e5
mov edx, dword [esp + 0x84]
mov ecx, dword [esp + 0x64]
lea edi, [ebx + 1]
lea esi, [edx + ecx]
mov dword [esp + 0x70], esi
cmp edx, 0xf
jb 0x43134f
mov eax, dword [esp + 0x38]
lea ebx, [edx - 0xf]
mov byte [eax], 0xf0
cmp ebx, 0xff
jb 0x43134a
mov eax, 0x80808081
mul ebx
mov esi, edx
shr esi, 7
push esi
push 0xff
push edi
call fcn.0048ba70
add esp, 0xc
add edi, esi
nop word [eax + eax]
sub ebx, 0xff
sub esi, 1
jne 0x431330
mov esi, dword [esp + 0x70]
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x84]
mov byte [edi], bl
inc edi
jmp 0x431356
mov al, dl
shl al, 4
mov byte [ebx], al
push edx
push ecx
push edi
call fcn.0048b4f0
mov eax, dword [ebp + 0xc]
add esp, 0xc
sub esi, dword [esp + 0x9c]
mov dword [eax], esi
mov eax, dword [esp + 0x84]
sub eax, dword [ebp + 8]
add eax, edi
mov dword [esp + 0x84], eax
push dword [esp + 0x54]
call fcn.004988d3
mov eax, dword [esp + 0x88]
add esp, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret