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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x100
mov eax, dword [ebp + 0x10]
mov cl, byte [eax + 0x14]
mov esi, 1
shl esi, cl
mov edi, dword [ebp + 0x18]
mov eax, edi
shr eax, 0x14
xor ecx, ecx
test edi, 0xfffff
setne cl
mov edx, 1
add ecx, eax
mov dword [esp + 0xb0], ecx
je 0x559a02
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
add edi, dword [ebp + 0x14]
test esi, esi
cmovne edx, esi
mov dword [esp + 0xac], edx
lea ebx, [eax + 0x24]
mov dword [esp + 0xc4], ebx
mov edx, dword [ecx + 0xc]
add eax, 0x130
mov dword [esp + 0xb8], eax
xor eax, eax
mov dword [esp + 0x60], 0
mov dword [esp + 0x7c], esi
mov dword [esp + 0x5c], edi
jmp 0x558e8d
mov edx, dword [esp + 0x34]
add edx, dword [esp + 0x60]
mov esi, edx
mov ebx, dword [esp + 0xc0]
add ebx, 1
mov edx, eax
mov eax, ebx
mov dword [esp + 0x60], esi
cmp ebx, dword [esp + 0xb0]
mov esi, dword [esp + 0x7c]
je 0x559a02
cmp edx, dword [ecx + 0x10]
jae 0x559a02
mov dword [esp + 0xbc], edx
mov dword [esp + 0xc0], eax
shl eax, 0x14
mov ebx, dword [ebp + 0x14]
lea edx, [ebx + eax]
mov ecx, edi
sub ecx, edx
cmp ecx, 0x100000
lea eax, [ebx + eax + 0x100000]
cmovb eax, edi
mov edi, dword [ebp + 8]
mov ebx, dword [edi + 4]
mov dword [esp + 0x34], eax
sub eax, ebx
cmp eax, 0xa0000000
mov dword [esp + 0x14], edx
ja 0x558f00
mov dword [esp + 0x30], ebx
mov ecx, dword [edi + 0x1c]
mov edi, dword [esp + 0x5c]
add ecx, esi
cmp eax, ecx
ja 0x55900f
mov eax, dword [ebp + 8]
mov esi, dword [eax + 0xc]
mov ebx, dword [eax + 0x10]
mov eax, dword [ebp + 0x10]
jmp 0x55903c
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax + 4]
mov dword [esp + 4], ecx
mov esi, 1
mov eax, edi
shl esi, cl
mov dword [esp + 0x10], esi
lea esi, [edx - 2]
mov ecx, dword [esp + 0xac]
add ebx, ecx
mov edx, esi
sub edx, ebx
sub esi, ecx
mov dword [edi + 4], esi
add dword [edi + 8], edx
mov esi, dword [edi + 0x10]
mov edi, esi
sub edi, edx
lea ebx, [edx + 2]
cmp esi, ebx
mov ecx, 2
cmovb edi, ecx
mov ecx, dword [eax + 0xc]
mov esi, ecx
sub esi, edx
cmp ecx, ebx
mov dword [eax + 0x10], edi
mov ecx, 2
cmovb esi, ecx
mov dword [eax + 0xc], esi
add dword [eax + 0x14], 1
mov esi, dword [eax + 0x18]
xor edi, edi
cmp dword [esp + 4], 2
mov ebx, 0
jb 0x558fbb
mov eax, dword [esp + 0x10]
and eax, 0xfffffffc
mov dword [esp + 0x20], eax
xor edi, edi
nop dword [eax]
mov ecx, dword [esi + edi*8]
mov eax, dword [esi + edi*8 + 8]
sub ecx, edx
cmovb ecx, ebx
mov dword [esi + edi*8], ecx
sub eax, edx
cmovb eax, ebx
mov dword [esi + edi*8 + 8], eax
mov eax, dword [esi + edi*8 + 0x10]
sub eax, edx
cmovb eax, ebx
mov dword [esi + edi*8 + 0x10], eax
mov eax, dword [esi + edi*8 + 0x18]
sub eax, edx
cmovb eax, ebx
mov dword [esi + edi*8 + 0x18], eax
add edi, 4
cmp dword [esp + 0x20], edi
jne 0x558f80
cmp dword [esp + 4], 1
ja 0x558fe4
and dword [esp + 0x10], 3
lea ecx, [esi + edi*8]
xor esi, esi
nop dword [eax]
mov eax, dword [ecx + esi*8]
sub eax, edx
cmovb eax, ebx
mov dword [ecx + esi*8], eax
add esi, 1
cmp dword [esp + 0x10], esi
jne 0x558fd0
mov eax, dword [ebp + 8]
mov dword [eax + 0x1c], 0
mov ecx, dword [eax + 4]
mov eax, dword [esp + 0x34]
mov dword [esp + 0x30], ecx
sub eax, ecx
xor ecx, ecx
mov esi, dword [esp + 0x7c]
mov edi, dword [esp + 0x5c]
add ecx, esi
cmp eax, ecx
jbe 0x558eed
sub eax, esi
mov ecx, dword [ebp + 8]
mov ebx, dword [ecx + 0x10]
cmp ebx, eax
jae 0x559020
mov dword [ecx + 0x10], eax
mov ebx, eax
mov eax, dword [ecx + 0xc]
mov edx, ebx
mov esi, eax
cmp eax, ebx
mov eax, dword [ebp + 0x10]
jae 0x559033
mov esi, edx
mov dword [ecx + 0xc], edx
mov dword [ecx + 0x1c], 0
mov ebx, edx
mov ecx, dword [eax + 8]
mov edx, 1
mov dword [esp + 0x8c], ecx
shl edx, cl
mov dword [esp + 0xd8], edx
mov ecx, dword [esp + 0x14]
sub dword [esp + 0x34], ecx
mov ecx, eax
mov eax, dword [eax + 4]
mov dword [esp + 0x10], eax
mov eax, dword [ecx + 0xc]
mov dword [esp + 0x40], eax
cmp ebx, esi
mov dword [esp + 0x80], ebx
mov dword [esp + 0x28], esi
jae 0x559090
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 8]
mov esi, dword [esp + 0x28]
mov ebx, dword [esp + 0x80]
mov eax, ebx
jmp 0x559094
xor edx, edx
mov eax, esi
mov dword [esp + 0xa4], eax
add eax, edx
cmp ebx, esi
mov ecx, 0
cmovae eax, ecx
mov dword [esp + 0x54], eax
lea eax, [edx + esi]
cmovae eax, ecx
mov dword [esp + 0x68], eax
mov ecx, dword [esp + 0x34]
mov esi, ecx
mov eax, dword [esp + 0x40]
cmp eax, ecx
ja 0x5599d0
mov dword [esp + 0xe0], edx
mov ecx, dword [ebp + 0x10]
mov ecx, dword [ecx + 0x10]
cmp eax, 0x40
mov edx, 0x40
cmovb edx, eax
mov esi, 0xffffffff
shl esi, cl
test cl, 0x20
mov edi, 0xffffffff
cmovne edi, esi
mov ebx, 0
cmovne esi, ebx
sub edx, ecx
cmovb edx, ebx
test ecx, ecx
cmove edx, ecx
not esi
not edi
mov ecx, edx
shld edi, esi, cl
shl esi, cl
test dl, 0x20
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x14]
lea eax, [edx + ecx]
mov dword [esp + 0xec], 0
cmovne edi, esi
mov dword [esp + 0xe8], 0xffffffff
mov ebx, 0
cmovne esi, ebx
mov ebx, eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0xf4], edi
lea edi, [edx + ecx - 8]
mov ecx, edx
mov dword [esp + 0xf0], esi
lea esi, [edx + eax]
cmp esi, edi
jae 0x5599c8
mov edx, dword [esp + 0x10]
sub edx, dword [esp + 0x8c]
mov dword [esp + 0x48], esi
mov esi, dword [esp + 0x28]
mov ecx, dword [esp + 0x30]
add ecx, esi
mov dword [esp + 0x78], ecx
mov dword [esp + 0x44], edi
mov edi, 0xffffffff
mov ecx, edx
shl edi, cl
mov edx, dword [esp + 0x30]
neg eax
mov dword [esp + 0xb4], eax
not edi
lea eax, [ebx - 3]
mov dword [esp + 0x58], eax
mov dword [esp + 0x50], ebx
lea eax, [ebx - 1]
mov dword [esp + 0x90], eax
lea eax, [edx + 4]
mov dword [esp + 0xd0], eax
lea eax, [edx - 1]
mov dword [esp + 0xd4], eax
lea eax, [edx + esi + 4]
mov dword [esp + 0x98], eax
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x68]
add eax, 0xffffffff
mov dword [esp + 0xc8], eax
mov esi, dword [esp + 0x44]
mov dword [esp + 0xe4], edi
jmp 0x559206
mov esi, dword [esp + 0x44]
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x64]
add edx, eax
cmp edx, esi
jae 0x5599c0
mov dword [esp + 0xa8], 0
mov eax, esi
sub eax, edx
lea ecx, [esp + 0xe8]
mov edi, edx
lea esi, [esp + 0xa8]
push esi
push dword [esp + 0xc8]
push eax
call fcn.00558b80
add esp, 0xc
mov ecx, dword [esp + 0xa8]
test ecx, ecx
je 0x5599a0
mov dword [esp + 0x64], eax
mov dword [esp + 0x48], edi
mov eax, dword [esp + 0xb4]
add eax, edi
mov dword [esp + 0x10], eax
xor edi, edi
mov ebx, dword [esp + 0xb8]
mov dword [esp + 0xa0], ecx
nop word [eax + eax]
mov eax, dword [ebp + 8]
mov esi, dword [eax + edi*4 + 0x24]
add esi, dword [esp + 0x10]
push 0
push 0
push dword [esp + 0x48]
push esi
call fcn.004e8380
add esp, 0x10
and eax, dword [esp + 0xe4]
mov dword [ebx - 0xc], esi
mov dword [ebx - 8], eax
mov dword [ebx - 4], edx
mov ecx, dword [ebp + 0x10]
movzx ecx, byte [ecx + 8]
shl eax, cl
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx + 0x18]
lea edx, [ecx + eax*8]
mov dword [ebx], edx
prefetcht0 byte [ecx + eax*8]
add edi, 1
add ebx, 0x10
cmp dword [esp + 0xa0], edi
jne 0x559270
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x64]
add eax, ecx
mov dword [esp + 0xcc], eax
xor eax, eax
mov ecx, dword [ebp + 8]
jmp 0x559333
mov eax, dword [ecx + 0x20]
mov ecx, dword [ebp + 0x10]
mov ecx, dword [ecx + 8]
movzx edx, byte [eax + edi]
add eax, edi
shl edi, cl
shl edi, 3
mov esi, dword [ebp + 8]
add edi, dword [esi + 0x18]
mov esi, dword [esp + 0x10]
mov dword [edi + edx*8], esi
lea esi, [edi + edx*8]
add esi, 4
mov dword [esi], ebx
mov ebx, 0xffffffff
shl ebx, cl
add edx, 1
not ebx
and ebx, edx
mov byte [eax], bl
mov ecx, dword [ebp + 8]
mov eax, dword [esp + 0x9c]
add eax, 1
cmp eax, dword [esp + 0xa0]
je 0x5591f0
mov dword [esp + 0x9c], eax
shl eax, 4
mov esi, dword [ecx + eax + 0x124]
mov edi, dword [ecx + eax + 0x128]
mov ebx, dword [ecx + eax + 0x12c]
mov edx, esi
sub edx, dword [esp + 0x30]
mov dword [esp + 4], esi
cmp esi, dword [esp + 0x14]
mov dword [esp + 0x10], edx
jb 0x5592e0
cmp dword [esp + 0x8c], 0x1f
je 0x5592e0
mov ecx, dword [ecx + eax + 0x130]
mov eax, dword [esp + 0xd8]
lea esi, [ecx + eax*8]
mov eax, dword [esp + 0x28]
cmp dword [esp + 0x80], eax
mov dword [esp + 0x20], ebx
mov dword [esp + 0x18], edi
mov dword [esp + 0xc], esi
jae 0x559740
mov eax, dword [esp + 4]
lea edx, [eax + 4]
mov dword [esp + 0x84], edx
add eax, 0xffffffff
mov dword [esp + 0x88], eax
mov dword [esp + 0x3c], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x94], 0
mov dword [esp + 0x4c], 0
jmp 0x559403
add ecx, 8
cmp ecx, esi
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0x20]
jae 0x5598f0
cmp dword [ecx + 4], ebx
jne 0x5593f0
mov edx, dword [ecx]
cmp edx, dword [esp + 0xa4]
jbe 0x5593f0
cmp edx, dword [esp + 0x28]
mov esi, dword [esp + 0x30]
cmovb esi, dword [esp + 0xe0]
mov eax, dword [esp + 0x50]
mov ebx, eax
cmovb ebx, dword [esp + 0x68]
mov dword [esp + 0x24], edx
mov dword [esp + 0x6c], esi
add esi, edx
mov dword [esp + 0x74], ebx
mov edx, ebx
sub edx, esi
mov ebx, dword [esp + 4]
add edx, ebx
cmp edx, eax
cmovae edx, eax
lea eax, [edx - 3]
mov dword [esp + 0x70], esi
mov dword [esp + 8], ebx
mov dword [esp + 0x1c], eax
cmp eax, ebx
mov dword [esp + 0x2c], esi
jbe 0x559535
mov dword [esp + 0xdc], edx
mov eax, dword [ebx]
xor eax, dword [esi]
je 0x55947b
bsf ebx, eax
shr ebx, 3
jmp 0x5594c8
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x6c]
add eax, esi
add eax, 4
mov dword [esp + 8], eax
xor eax, eax
mov esi, dword [esp + 0x84]
nop word cs:[eax + eax]
nop
lea ebx, [esi + eax]
cmp ebx, dword [esp + 0x1c]
jae 0x559514
mov edi, dword [esi + eax]
lea ebx, [eax + 4]
mov edx, dword [esp + 8]
xor edi, dword [edx + eax]
mov eax, ebx
je 0x5594a0
bsf eax, edi
shr eax, 3
add eax, ebx
mov ebx, eax
mov edi, dword [esp + 0x18]
mov edx, dword [esp + 4]
mov esi, dword [esp + 0xc]
mov eax, dword [esp + 0x2c]
add eax, ebx
cmp eax, dword [esp + 0x74]
jne 0x559589
mov dword [esp + 8], ebx
lea eax, [edx + ebx]
mov ebx, dword [esp + 0x78]
mov edi, ebx
mov edx, eax
cmp dword [esp + 0x58], eax
jbe 0x5596f1
mov edx, eax
mov eax, dword [eax]
xor eax, dword [ebx]
je 0x559684
bsf edx, eax
shr edx, 3
mov edi, dword [esp + 0x18]
jmp 0x5596cd
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x6c]
add esi, edi
lea eax, [eax + esi + 4]
mov dword [esp + 0x70], eax
mov edi, dword [esp + 0x18]
mov dword [esp + 8], ebx
mov edx, dword [esp + 0xdc]
lea esi, [edx - 1]
mov ebx, dword [esp + 8]
cmp ebx, esi
jae 0x55955c
mov eax, dword [esp + 0x70]
movzx esi, word [eax]
cmp si, word [ebx]
jne 0x559552
add ebx, 2
add eax, 2
mov esi, dword [esp + 0xc]
cmp ebx, edx
jb 0x559568
jmp 0x559573
mov esi, dword [esp + 0xc]
mov eax, dword [esp + 0x70]
cmp ebx, edx
jae 0x559573
mov al, byte [eax]
xor edx, edx
cmp al, byte [ebx]
sete dl
add ebx, edx
mov edx, dword [esp + 4]
sub ebx, edx
mov eax, dword [esp + 0x2c]
add eax, ebx
cmp eax, dword [esp + 0x74]
je 0x5594e0
cmp ebx, dword [esp + 0x40]
jb 0x5593f0
mov eax, dword [esp + 0x24]
cmp eax, dword [esp + 0x28]
mov edi, dword [esp + 0x78]
cmovb edi, dword [esp + 0x54]
xor edx, edx
mov eax, dword [esp + 4]
cmp eax, dword [esp + 0x14]
mov dword [esp + 8], ebx
jbe 0x5595ec
cmp dword [esp + 0x2c], edi
jbe 0x5595ec
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x6c]
add eax, edx
add eax, 0xffffffff
xor edx, edx
mov esi, dword [esp + 0x88]
movzx ebx, byte [esi]
cmp bl, byte [eax]
jne 0x5595ec
add edx, 1
cmp esi, dword [esp + 0x14]
jbe 0x5595ec
add esi, 0xffffffff
lea ebx, [eax - 1]
cmp eax, edi
mov eax, ebx
ja 0x5595d0
cmp edi, dword [esp + 0x54]
je 0x559650
mov eax, dword [esp + 0x2c]
sub eax, edx
cmp eax, edi
jne 0x559650
xor eax, eax
mov esi, dword [esp + 0x68]
cmp esi, dword [esp + 0x54]
jbe 0x55964e
mov esi, edx
neg esi
mov edi, dword [esp + 4]
add edi, esi
cmp edi, dword [esp + 0x14]
jbe 0x55964e
add esi, dword [esp + 0x88]
xor eax, eax
mov edi, dword [esp + 0xc8]
nop dword [eax + eax]
movzx ebx, byte [esi]
cmp bl, byte [edi]
jne 0x55964e
add eax, 1
cmp esi, dword [esp + 0x14]
jbe 0x55964e
add esi, 0xffffffff
lea ebx, [edi - 1]
cmp edi, dword [esp + 0x54]
mov edi, ebx
ja 0x559630
add edx, eax
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0xc]
mov ebx, dword [esp + 8]
lea eax, [edx + ebx]
cmp eax, dword [esp + 0x94]
jbe 0x5593f0
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x94], eax
mov dword [esp + 0x38], edx
mov dword [esp + 0x3c], ebx
jmp 0x5593f0
mov dword [esp + 0x1c], edx
mov eax, dword [esp + 0x84]
mov edx, dword [esp + 8]
add eax, edx
xor edi, edi
nop word [eax + eax]
lea edx, [eax + edi]
cmp edx, dword [esp + 0x58]
jae 0x5596e2
mov edx, dword [eax + edi]
lea esi, [edi + 4]
mov ebx, dword [esp + 0x98]
xor edx, dword [ebx + edi]
mov edi, esi
je 0x5596a0
bsf edx, edx
shr edx, 3
add edx, esi
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0xc]
mov ebx, dword [esp + 8]
add ebx, edx
cmp ebx, dword [esp + 0x40]
jb 0x5593f0
jmp 0x559593
add edi, dword [esp + 0x98]
mov esi, dword [esp + 0xc]
mov eax, dword [esp + 0x1c]
cmp edx, dword [esp + 0x90]
jae 0x55970c
mov ebx, eax
movzx eax, word [edi]
cmp ax, word [edx]
jne 0x55970a
add edx, 2
add edi, 2
mov eax, ebx
cmp edx, dword [esp + 0x50]
jae 0x559725
mov dword [esp + 0x1c], eax
mov al, byte [edi]
xor ebx, ebx
cmp al, byte [edx]
mov eax, dword [esp + 0x1c]
sete bl
add edx, ebx
mov edi, dword [esp + 0x18]
mov ebx, dword [esp + 8]
sub edx, eax
add ebx, edx
cmp ebx, dword [esp + 0x40]
jb 0x5593f0
jmp 0x559593
mov eax, dword [esp + 4]
lea edx, [eax + 4]
mov dword [esp + 0x74], edx
add eax, 0xffffffff
mov dword [esp + 0x24], eax
mov dword [esp + 0x3c], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x4c], 0
jmp 0x559797
mov ebx, dword [esp + 0x20]
add ecx, 8
cmp ecx, esi
mov edi, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
jae 0x5598f0
cmp dword [ecx + 4], ebx
jne 0x559784
mov ebx, dword [ecx]
cmp ebx, dword [esp + 0xa4]
jbe 0x559780
mov eax, dword [esp + 0x30]
lea edi, [eax + ebx]
mov edx, dword [esp + 4]
cmp dword [esp + 0x58], edx
jbe 0x559834
mov eax, dword [edx]
xor eax, dword [edi]
je 0x5597cf
bsf edx, eax
shr edx, 3
cmp edx, dword [esp + 0x40]
jb 0x559780
jmp 0x559875
mov eax, dword [esp + 0xd0]
add eax, ebx
mov dword [esp + 0x1c], eax
xor esi, esi
mov edi, dword [esp + 0x74]
mov dword [esp + 8], ebx
nop word cs:[eax + eax]
lea edx, [edi + esi]
cmp edx, dword [esp + 0x58]
jae 0x55982a
mov edx, dword [edi + esi]
lea eax, [esi + 4]
mov ebx, ecx
mov ecx, dword [esp + 0x1c]
xor edx, dword [ecx + esi]
mov ecx, ebx
mov ebx, dword [esp + 8]
mov esi, eax
je 0x5597f0
bsf edx, edx
shr edx, 3
add edx, eax
mov esi, dword [esp + 0xc]
cmp edx, dword [esp + 0x40]
jb 0x559780
jmp 0x559875
mov edi, dword [esp + 0x1c]
add edi, esi
mov esi, dword [esp + 0xc]
cmp edx, dword [esp + 0x90]
jae 0x55984b
movzx eax, word [edi]
cmp ax, word [edx]
jne 0x55984b
add edx, 2
add edi, 2
cmp edx, dword [esp + 0x50]
jae 0x559867
mov al, byte [edi]
mov byte [esp + 0x1c], al
mov al, byte [esp + 0x1c]
cmp al, byte [edx]
mov eax, 0
sete al
add edx, eax
sub edx, dword [esp + 4]
cmp edx, dword [esp + 0x40]
jb 0x559780
xor edi, edi
mov eax, dword [esp + 4]
cmp eax, dword [esp + 0x14]
jbe 0x5598be
cmp ebx, dword [esp + 0x28]
jle 0x5598be
add ebx, dword [esp + 0xd4]
xor edi, edi
mov esi, dword [esp + 0x24]
nop word cs:[eax + eax]
nop
movzx eax, byte [esi]
cmp al, byte [ebx]
jne 0x5598be
add edi, 1
cmp esi, dword [esp + 0x14]
jbe 0x5598be
add esi, 0xffffffff
lea eax, [ebx - 1]
cmp ebx, dword [esp + 0x78]
mov ebx, eax
ja 0x5598a0
lea eax, [edi + edx]
cmp eax, dword [esp + 0x2c]
mov ebx, dword [esp + 0x20]
mov esi, dword [esp + 0xc]
jbe 0x559784
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x38], edi
mov dword [esp + 0x3c], edx
jmp 0x559784
mov esi, dword [esp + 0x4c]
test esi, esi
mov ecx, dword [ebp + 8]
je 0x5592e0
mov ecx, dword [ebp + 0xc]
mov eax, dword [ecx + 0xc]
cmp eax, dword [ecx + 0x10]
je 0x559a06
mov ebx, ecx
mov ecx, edx
sub ecx, dword [esi]
mov edx, dword [esp + 4]
sub edx, dword [esp + 0x38]
sub edx, dword [esp + 0x14]
mov esi, dword [ebx]
lea edi, [eax + eax*2]
mov dword [esi + edi*4 + 4], edx
mov edx, dword [esp + 0x3c]
mov ebx, dword [esp + 0x38]
add edx, ebx
mov dword [esi + edi*4 + 8], edx
mov dword [esi + edi*4], ecx
add eax, 1
mov ecx, dword [ebp + 0xc]
mov dword [ecx + 0xc], eax
mov eax, dword [ebp + 0x10]
mov cl, byte [eax + 8]
mov edi, dword [esp + 0x18]
mov edx, edi
shl edx, cl
shl edx, 3
mov eax, dword [ebp + 8]
add edx, dword [eax + 0x18]
mov ebx, dword [eax + 0x20]
movzx esi, byte [ebx + edi]
mov eax, dword [esp + 0x10]
mov dword [edx + esi*8], eax
mov eax, dword [esp + 0x20]
mov dword [edx + esi*8 + 4], eax
add esi, 1
mov edx, 0xffffffff
shl edx, cl
not edx
and edx, esi
mov byte [ebx + edi], dl
mov ecx, dword [esp + 4]
add ecx, dword [esp + 0x3c]
cmp ecx, dword [esp + 0xcc]
ja 0x5599ab
mov dword [esp + 0x14], ecx
jmp 0x559319
mov esi, dword [esp + 0x44]
mov edx, edi
jmp 0x5591fc
mov edx, ecx
mov eax, dword [esp + 0x64]
sub edx, eax
mov dword [esp + 0x14], ecx
mov esi, dword [esp + 0x44]
jmp 0x5591fc
mov ecx, dword [esp + 0x14]
mov ebx, dword [esp + 0x50]
sub ebx, ecx
mov edi, dword [esp + 0x5c]
mov esi, ebx
cmp esi, 0xffffff88
ja 0x559a13
mov ecx, dword [ebp + 0xc]
mov eax, dword [ecx + 0xc]
mov edx, dword [esp + 0xbc]
cmp edx, eax
jae 0x558e60
mov ecx, dword [ebp + 0xc]
mov ecx, dword [ecx]
lea edx, [edx + edx*2]
mov ebx, dword [esp + 0x60]
add dword [ecx + edx*4 + 4], ebx
mov ecx, dword [ebp + 0xc]
jmp 0x558e6a
xor eax, eax
jmp 0x559a0b
mov eax, 0xffffffba
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, esi
jmp 0x559a0b