Function at 0x496740
Capabilities:
Enumerate pe sections

Disassembly:
mov ecx, dword [esp + 0x10]
push ebx
push ebp
push esi
xor esi, esi
cmp ecx, esi
je 0x497628
mov ebx, dword [esp + 0x10]
mov al, byte [ebx + 8]
test al, 4
je 0x496772
cmp al, 3
je 0x497628
mov ebp, dword [esp + 0x18]
cmp ebp, esi
je 0x497628
jmp 0x496776
mov ebp, dword [esp + 0x18]
and eax, 0xff
push edi
cmp eax, 6
ja case.0x4967a3.6
jmp dword [eax*4 + 0x49762c]
xor eax, eax
mov al, byte [ebx + 9]
dec eax
cmp eax, 0xf
ja case.0x4967a3.6
xor edx, edx
mov dl, byte [eax + 0x497660]
jmp dword [edx*4 + 0x497648]
mov eax, dword [ebx]
mov esi, dword [esp + 0x18]
xor edi, edi
mov edx, 7
test eax, eax
jbe case.0x4967a3.6
mov al, byte [esi]
mov cl, dl
shr al, cl
xor cx, cx
and al, 1
mov cl, al
cmp cx, word [ebp + 8]
jne 0x4967f9
mov bl, byte [esi]
mov ecx, 7
sub ecx, edx
mov eax, 0x7f7f
sar eax, cl
mov ecx, dword [esp + 0x20]
and al, bl
mov byte [esi], al
mov bl, byte [ecx + 8]
mov ecx, edx
shl bl, cl
or bl, al
mov byte [esi], bl
mov ebx, dword [esp + 0x14]
test edx, edx
jne 0x496805
mov edx, 7
inc esi
jmp 0x496806
dec edx
mov eax, dword [ebx]
inc edi
cmp edi, eax
jb 0x4967bf
jmp case.0x4967a3.6
mov eax, dword [ebx]
mov esi, dword [esp + 0x18]
xor edi, edi
mov edx, 6
test eax, eax
jbe case.0x4967a3.6
mov al, byte [esi]
mov cl, dl
shr al, cl
xor cx, cx
and al, 3
mov cl, al
cmp cx, word [ebp + 8]
jne 0x496861
mov bl, byte [esi]
mov ecx, 6
sub ecx, edx
mov eax, 0x3f3f
sar eax, cl
mov ecx, dword [esp + 0x20]
and al, bl
mov byte [esi], al
mov bl, byte [ecx + 8]
mov ecx, edx
shl bl, cl
or bl, al
mov byte [esi], bl
mov ebx, dword [esp + 0x14]
test edx, edx
jne 0x49686d
mov edx, 6
inc esi
jmp 0x496870
sub edx, 2
mov eax, dword [ebx]
inc edi
cmp edi, eax
jb 0x496827
jmp case.0x4967a3.6
mov eax, dword [ebx]
mov esi, dword [esp + 0x18]
xor edi, edi
mov edx, 4
test eax, eax
jbe case.0x4967a3.6
mov al, byte [esi]
mov cl, dl
shr al, cl
xor cx, cx
and al, 0xf
mov cl, al
cmp cx, word [ebp + 8]
jne 0x4968cb
mov bl, byte [esi]
mov ecx, 4
sub ecx, edx
mov eax, 0xf0f
sar eax, cl
mov ecx, dword [esp + 0x20]
and al, bl
mov byte [esi], al
mov bl, byte [ecx + 8]
mov ecx, edx
shl bl, cl
or bl, al
mov byte [esi], bl
mov ebx, dword [esp + 0x14]
test edx, edx
jne 0x4968d7
mov edx, 4
inc esi
jmp 0x4968da
sub edx, 4
mov eax, dword [ebx]
inc edi
cmp edi, eax
jb 0x496891
jmp case.0x4967a3.6
mov edi, dword [esp + 0x28]
test edi, edi
je 0x49692d
mov eax, dword [ebx]
mov ecx, dword [esp + 0x18]
xor esi, esi
test eax, eax
jbe case.0x4967a3.6
mov al, byte [ecx]
xor dx, dx
mov dl, al
cmp dx, word [ebp + 8]
jne 0x496916
mov eax, dword [esp + 0x20]
mov dl, byte [eax + 8]
mov byte [ecx], dl
jmp 0x496920
and eax, 0xff
mov al, byte [eax + edi]
mov byte [ecx], al
mov eax, dword [ebx]
inc esi
inc ecx
cmp esi, eax
jb 0x4968fe
jmp case.0x4967a3.6
mov edx, dword [ebx]
mov eax, dword [esp + 0x18]
xor esi, esi
test edx, edx
jbe case.0x4967a3.6
movzx dx, byte [eax]
cmp dx, word [ebp + 8]
jne 0x49694c
mov dl, byte [ecx + 8]
mov byte [eax], dl
mov edx, dword [ebx]
inc esi
inc eax
cmp esi, edx
jb 0x49693d
jmp case.0x4967a3.6
mov edi, dword [esp + 0x34]
test edi, edi
je 0x4969cc
mov edx, dword [ebx]
mov eax, dword [esp + 0x18]
xor esi, esi
test edx, edx
jbe case.0x4967a3.6
movzx dx, byte [eax]
movzx bp, byte [eax + 1]
shl edx, 8
add edx, ebp
mov ebp, dword [esp + 0x1c]
cmp dx, word [ebp + 8]
jne 0x496998
xor edx, edx
mov dl, byte [ecx + 9]
mov byte [eax], dl
mov dl, byte [ecx + 8]
mov byte [eax + 1], dl
jmp 0x4969bd
xor ecx, ecx
mov cl, byte [eax + 1]
mov edx, ecx
mov cl, byte [esp + 0x40]
shr edx, cl
xor ecx, ecx
mov cl, byte [eax]
mov edx, dword [edi + edx*4]
mov cx, word [edx + ecx*2]
xor edx, edx
mov dl, ch
mov byte [eax + 1], cl
mov ecx, dword [esp + 0x20]
mov byte [eax], dl
mov edx, dword [ebx]
inc esi
add eax, 2
cmp esi, edx
jb 0x496971
jmp case.0x4967a3.6
mov edx, dword [ebx]
mov eax, dword [esp + 0x18]
xor esi, esi
test edx, edx
jbe case.0x4967a3.6
movzx dx, byte [eax]
movzx di, byte [eax + 1]
shl edx, 8
add edx, edi
cmp dx, word [ebp + 8]
jne 0x4969fd
xor edx, edx
mov dl, byte [ecx + 9]
mov byte [eax], dl
mov dl, byte [ecx + 8]
mov byte [eax + 1], dl
mov edx, dword [ebx]
inc esi
add eax, 2
cmp esi, edx
jb 0x4969dc
jmp case.0x4967a3.6
cmp byte [ebx + 9], 8
jne 0x496add
mov edi, dword [esp + 0x28]
mov eax, dword [ebx]
cmp edi, esi
je 0x496a8e
test eax, eax
jbe case.0x4967a3.6
mov eax, dword [esp + 0x18]
add eax, 2
movzx dx, byte [eax - 2]
cmp dx, word [ebp + 2]
jne 0x496a60
movzx dx, byte [eax - 1]
cmp dx, word [ebp + 4]
jne 0x496a60
movzx dx, byte [eax]
cmp dx, word [ebp + 6]
jne 0x496a60
mov dl, byte [ecx + 2]
mov byte [eax - 2], dl
mov dl, byte [ecx + 4]
mov byte [eax - 1], dl
mov dl, byte [ecx + 6]
jmp 0x496a7d
xor edx, edx
mov dl, byte [eax - 2]
mov dl, byte [edx + edi]
mov byte [eax - 2], dl
xor edx, edx
mov dl, byte [eax - 1]
mov dl, byte [edx + edi]
mov byte [eax - 1], dl
xor edx, edx
mov dl, byte [eax]
mov dl, byte [edx + edi]
mov byte [eax], dl
mov edx, dword [ebx]
inc esi
add eax, 3
cmp esi, edx
jb 0x496a2f
jmp case.0x4967a3.6
test eax, eax
jbe case.0x4967a3.6
mov eax, dword [esp + 0x18]
add eax, 2
movzx dx, byte [eax - 2]
cmp dx, word [ebp + 2]
jne 0x496ace
movzx dx, byte [eax - 1]
cmp dx, word [ebp + 4]
jne 0x496ace
movzx dx, byte [eax]
cmp dx, word [ebp + 6]
jne 0x496ace
mov dl, byte [ecx + 2]
mov byte [eax - 2], dl
mov dl, byte [ecx + 4]
mov byte [eax - 1], dl
mov dl, byte [ecx + 6]
mov byte [eax], dl
mov edx, dword [ebx]
inc esi
add eax, 3
cmp esi, edx
jb 0x496a9d
jmp case.0x4967a3.6
mov esi, dword [esp + 0x34]
test esi, esi
je 0x496bf9
mov eax, dword [ebx]
xor ebp, ebp
test eax, eax
jbe case.0x4967a3.6
mov eax, dword [esp + 0x18]
mov edi, dword [esp + 0x40]
add eax, 2
movzx cx, byte [eax - 2]
movzx dx, byte [eax - 1]
shl ecx, 8
add ecx, edx
mov edx, dword [esp + 0x1c]
cmp cx, word [edx + 2]
jne 0x496b79
movzx cx, byte [eax]
movzx dx, byte [eax + 1]
shl ecx, 8
add ecx, edx
mov edx, dword [esp + 0x1c]
cmp cx, word [edx + 4]
jne 0x496b79
movzx cx, byte [eax + 2]
movzx dx, byte [eax + 3]
shl ecx, 8
add ecx, edx
mov edx, dword [esp + 0x1c]
cmp cx, word [edx + 6]
jne 0x496b79
mov ecx, dword [esp + 0x20]
xor edx, edx
mov dl, byte [ecx + 3]
mov byte [eax - 2], dl
mov dl, byte [ecx + 2]
mov byte [eax - 1], dl
xor edx, edx
mov dl, byte [ecx + 5]
mov byte [eax], dl
mov dl, byte [ecx + 4]
mov byte [eax + 1], dl
xor edx, edx
mov dl, byte [ecx + 7]
mov byte [eax + 2], dl
mov cl, byte [ecx + 6]
mov byte [eax + 3], cl
jmp 0x496be6
xor ecx, ecx
mov edx, edi
mov cl, byte [eax - 1]
and edx, 0xff
mov ebx, ecx
mov cl, dl
shr ebx, cl
xor ecx, ecx
mov cl, byte [eax - 2]
mov ebx, dword [esi + ebx*4]
mov cx, word [ebx + ecx*2]
xor ebx, ebx
mov bl, ch
mov byte [eax - 1], cl
xor ecx, ecx
mov byte [eax - 2], bl
mov cl, byte [eax + 1]
mov ebx, ecx
mov cl, dl
shr ebx, cl
xor ecx, ecx
mov cl, byte [eax]
mov ebx, dword [esi + ebx*4]
mov cx, word [ebx + ecx*2]
xor ebx, ebx
mov bl, ch
mov byte [eax + 1], cl
xor ecx, ecx
mov byte [eax], bl
mov cl, byte [eax + 3]
mov ebx, ecx
mov cl, dl
shr ebx, cl
xor edx, edx
mov dl, byte [eax + 2]
mov ecx, dword [esi + ebx*4]
mov ebx, dword [esp + 0x14]
mov cx, word [ecx + edx*2]
xor edx, edx
mov dl, ch
mov byte [eax + 3], cl
mov byte [eax + 2], dl
mov ecx, dword [ebx]
inc ebp
add eax, 6
cmp ebp, ecx
jb 0x496b00
jmp case.0x4967a3.6
mov eax, dword [ebx]
xor esi, esi
test eax, eax
jbe case.0x4967a3.6
mov eax, dword [esp + 0x18]
add eax, 2
movzx dx, byte [eax - 2]
movzx di, byte [eax - 1]
shl edx, 8
add edx, edi
cmp dx, word [ebp + 2]
jne 0x496c73
movzx dx, byte [eax]
movzx di, byte [eax + 1]
shl edx, 8
add edx, edi
cmp dx, word [ebp + 4]
jne 0x496c73
movzx dx, byte [eax + 2]
movzx di, byte [eax + 3]
shl edx, 8
add edx, edi
cmp dx, word [ebp + 6]
jne 0x496c73
xor edx, edx
mov dl, byte [ecx + 3]
mov byte [eax - 2], dl
mov dl, byte [ecx + 2]
mov byte [eax - 1], dl
xor edx, edx
mov dl, byte [ecx + 5]
mov byte [eax], dl
mov dl, byte [ecx + 4]
mov byte [eax + 1], dl
xor edx, edx
mov dl, byte [ecx + 7]
mov byte [eax + 2], dl
mov dl, byte [ecx + 6]
mov byte [eax + 3], dl
mov edx, dword [ebx]
inc esi
add eax, 6
cmp esi, edx
jb 0x496c0c
jmp case.0x4967a3.6
cmp byte [ebx + 9], 8
jne 0x496db2
mov ebp, dword [esp + 0x30]
cmp ebp, esi
je 0x496d43
cmp dword [esp + 0x2c], esi
je 0x496d43
cmp dword [esp + 0x28], esi
je 0x496d43
mov eax, dword [ebx]
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x18]
test eax, eax
mov edi, esi
jbe case.0x4967a3.6
movzx ax, byte [esi + 1]
cmp ax, 0xff
jne 0x496cda
mov edx, dword [esp + 0x28]
xor eax, eax
mov al, byte [esi]
mov al, byte [eax + edx]
mov byte [edi], al
jmp 0x496d2b
test ax, ax
jne 0x496ce6
mov dl, byte [ecx + 8]
mov byte [edi], dl
jmp 0x496d2b
mov edx, dword [esp + 0x24]
mov ecx, 0xff
sub ecx, eax
imul cx, word [edx + 8]
xor edx, edx
mov dl, byte [esi]
movzx dx, byte [edx + ebp]
imul edx, eax
lea eax, [ecx + edx + 0x80]
mov edx, dword [esp + 0x2c]
and eax, 0xffff
mov ecx, eax
shr ecx, 8
add ecx, eax
sar ecx, 8
and ecx, 0xff
mov al, byte [ecx + edx]
mov ecx, dword [esp + 0x20]
mov byte [edi], al
mov eax, dword [esp + 0x1c]
mov edx, dword [ebx]
inc eax
add esi, 2
inc edi
cmp eax, edx
mov dword [esp + 0x1c], eax
jb 0x496cc0
jmp case.0x4967a3.6
mov eax, dword [ebx]
mov esi, dword [esp + 0x18]
xor ebp, ebp
mov edi, esi
test eax, eax
jbe case.0x4967a3.6
mov al, byte [esi + 1]
cmp al, 0xff
jne 0x496d60
mov cl, byte [esi]
jmp 0x496da0
test al, al
jne 0x496d6f
mov edx, dword [esp + 0x20]
mov al, byte [edx + 8]
mov byte [edi], al
jmp 0x496da2
mov edx, dword [esp + 0x24]
mov ecx, 0xff
movzx ax, al
sub ecx, eax
imul cx, word [edx + 8]
movzx dx, byte [esi]
imul edx, eax
lea eax, [ecx + edx + 0x80]
and eax, 0xffff
mov ecx, eax
shr ecx, 8
add ecx, eax
sar ecx, 8
mov byte [edi], cl
mov eax, dword [ebx]
inc ebp
add esi, 2
inc edi
cmp ebp, eax
jb 0x496d55
jmp case.0x4967a3.6
cmp dword [esp + 0x34], esi
je 0x496ec5
cmp dword [esp + 0x38], esi
je 0x496ec5
cmp dword [esp + 0x3c], esi
je 0x496ec5
mov eax, dword [ebx]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x1c], esi
mov esi, edx
test eax, eax
jbe case.0x4967a3.6
inc edx
movzx ax, byte [edx + 1]
movzx di, byte [edx + 2]
shl eax, 8
add eax, edi
cmp ax, 0xffff
jne 0x496e19
mov cl, byte [esp + 0x40]
mov edi, dword [esp + 0x34]
xor eax, eax
mov al, byte [edx]
shr eax, cl
xor ecx, ecx
mov cl, byte [edx - 1]
mov eax, dword [edi + eax*4]
mov ax, word [eax + ecx*2]
jmp 0x496e9a
test ax, ax
jne 0x496e2d
xor eax, eax
mov al, byte [ecx + 9]
mov byte [esi], al
mov al, byte [ecx + 8]
mov byte [esi + 1], al
jmp 0x496ea7
xor ecx, ecx
mov ebp, dword [esp + 0x3c]
mov cl, byte [edx]
and eax, 0xffff
mov edi, ecx
mov cl, byte [esp + 0x40]
shr edi, cl
xor ecx, ecx
mov cl, byte [edx - 1]
mov edi, dword [ebp + edi*4]
xor ebp, ebp
mov bp, word [edi + ecx*2]
mov edi, dword [esp + 0x24]
xor ecx, ecx
imul ebp, eax
mov cx, word [edi + 8]
mov edi, 0xffff
sub edi, eax
imul ecx, edi
lea ecx, [ecx + ebp + 0x8000]
mov eax, ecx
shr eax, 0x10
add eax, ecx
mov cl, byte [esp + 0x40]
shr eax, 0x10
and eax, 0xffff
mov edi, eax
and edi, 0xff
shr edi, cl
mov ecx, dword [esp + 0x38]
shr eax, 8
mov ecx, dword [ecx + edi*4]
mov ax, word [ecx + eax*2]
xor ecx, ecx
mov cl, ah
mov byte [esi], cl
mov ecx, dword [esp + 0x20]
mov byte [esi + 1], al
mov eax, dword [esp + 0x1c]
mov edi, dword [ebx]
inc eax
add edx, 4
add esi, 2
cmp eax, edi
mov dword [esp + 0x1c], eax
jb 0x496de5
jmp case.0x4967a3.6
mov eax, dword [ebx]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x1c], esi
mov esi, ecx
test eax, eax
jbe case.0x4967a3.6
add ecx, 3
movzx ax, byte [ecx - 1]
movzx dx, byte [ecx]
shl eax, 8
add eax, edx
cmp ax, 0xffff
jne 0x496ef9
mov ax, word [ecx - 3]
mov word [esi], ax
jmp 0x496f59
test ax, ax
jne 0x496f0e
mov edi, dword [esp + 0x20]
xor edx, edx
mov dl, byte [edi + 9]
mov byte [esi], dl
mov al, byte [edi + 8]
jmp 0x496f56
movzx dx, byte [ecx - 3]
movzx di, byte [ecx - 2]
mov ebp, dword [esp + 0x24]
and eax, 0xffff
shl edx, 8
add edx, edi
xor edi, edi
mov di, word [ebp + 8]
mov ebp, 0xffff
and edx, 0xffff
sub ebp, eax
imul edx, eax
imul edi, ebp
lea edx, [edx + edi + 0x8000]
mov eax, edx
shr eax, 0x10
add eax, edx
shr eax, 0x10
xor edx, edx
mov dl, ah
mov byte [esi], dl
mov byte [esi + 1], al
mov eax, dword [esp + 0x1c]
mov edx, dword [ebx]
inc eax
add ecx, 4
add esi, 2
cmp eax, edx
mov dword [esp + 0x1c], eax
jb 0x496edc
jmp case.0x4967a3.6
cmp byte [ebx + 9], 8
jne 0x497202
mov edx, dword [esp + 0x30]
cmp edx, esi
je 0x497102
cmp dword [esp + 0x2c], esi
je 0x497102
mov ecx, dword [esp + 0x28]
test ecx, ecx
je 0x4970fc
mov eax, dword [ebx]
mov dword [esp + 0x1c], 0
test eax, eax
jbe case.0x4967a3.6
mov edi, dword [esp + 0x18]
mov ebp, dword [esp + 0x24]
lea esi, [edi + 2]
inc edi
mov al, byte [edi + 2]
cmp al, 0xff
jne 0x496fec
xor eax, eax
mov al, byte [edi - 1]
mov al, byte [eax + ecx]
mov byte [esi - 2], al
xor eax, eax
mov al, byte [edi]
mov al, byte [eax + ecx]
mov byte [esi - 1], al
xor eax, eax
mov al, byte [edi + 1]
mov al, byte [eax + ecx]
mov byte [esi], al
jmp 0x4970e0
test al, al
jne 0x497012
mov eax, dword [esp + 0x20]
mov al, byte [eax + 2]
mov byte [esi - 2], al
mov eax, dword [esp + 0x20]
mov al, byte [eax + 4]
mov byte [esi - 1], al
mov eax, dword [esp + 0x20]
mov al, byte [eax + 6]
mov byte [esi], al
jmp 0x4970e0
xor ebx, ebx
mov ecx, 0xff
mov bl, byte [edi - 1]
movzx ax, al
movzx dx, byte [ebx + edx]
mov bx, word [ebp + 2]
sub ecx, eax
imul edx, eax
imul bx, cx
lea edx, [edx + ebx + 0x80]
and edx, 0xffff
mov ebx, edx
shr ebx, 8
add ebx, edx
mov edx, dword [esp + 0x2c]
sar ebx, 8
and ebx, 0xff
mov dl, byte [ebx + edx]
mov ebx, dword [esp + 0x30]
mov byte [esi - 2], dl
xor edx, edx
mov dl, byte [edi]
movzx dx, byte [edx + ebx]
mov bx, word [ebp + 4]
imul edx, eax
imul bx, cx
lea edx, [edx + ebx + 0x80]
and edx, 0xffff
mov ebx, edx
shr ebx, 8
add ebx, edx
mov edx, dword [esp + 0x2c]
sar ebx, 8
and ebx, 0xff
mov dl, byte [ebx + edx]
mov byte [esi - 1], dl
xor edx, edx
mov dl, byte [edi + 1]
mov ebx, edx
mov edx, dword [esp + 0x30]
movzx bx, byte [ebx + edx]
imul ebx, eax
mov ax, word [ebp + 6]
imul ax, cx
lea eax, [ebx + eax + 0x80]
mov ebx, dword [esp + 0x14]
and eax, 0xffff
mov ecx, eax
shr ecx, 8
add ecx, eax
mov eax, dword [esp + 0x2c]
sar ecx, 8
and ecx, 0xff
mov cl, byte [ecx + eax]
mov byte [esi], cl
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x1c]
add edi, 4
inc eax
add esi, 3
cmp eax, dword [ebx]
mov dword [esp + 0x1c], eax
jb 0x496fc1
jmp case.0x4967a3.6
mov ecx, dword [esp + 0x20]
xor esi, esi
mov eax, dword [ebx]
mov dword [esp + 0x1c], esi
cmp eax, esi
jbe case.0x4967a3.6
mov edi, dword [esp + 0x18]
lea esi, [edi + 2]
inc edi
mov al, byte [edi + 2]
cmp al, 0xff
jne 0x497134
mov dl, byte [edi - 1]
mov byte [esi - 2], dl
mov al, byte [edi]
mov byte [esi - 1], al
mov dl, byte [edi + 1]
mov byte [esi], dl
jmp 0x4971e4
test al, al
jne 0x49714e
mov al, byte [ecx + 2]
mov byte [esi - 2], al
mov dl, byte [ecx + 4]
mov byte [esi - 1], dl
mov al, byte [ecx + 6]
mov byte [esi], al
jmp 0x4971e4
mov ebp, dword [esp + 0x20]
mov ecx, 0xff
movzx dx, byte [edi - 1]
mov bp, word [ebp + 2]
movzx ax, al
sub ecx, eax
imul edx, eax
imul bp, cx
lea ebp, [edx + ebp + 0x80]
and ebp, 0xffff
mov edx, ebp
shr edx, 8
add edx, ebp
mov ebp, dword [esp + 0x20]
sar edx, 8
mov byte [esi - 2], dl
mov bp, word [ebp + 4]
movzx dx, byte [edi]
imul bp, cx
imul edx, eax
lea ebp, [edx + ebp + 0x80]
and ebp, 0xffff
mov edx, ebp
shr edx, 8
add edx, ebp
sar edx, 8
mov byte [esi - 1], dl
movzx dx, byte [edi + 1]
imul edx, eax
mov eax, dword [esp + 0x20]
mov ax, word [eax + 6]
imul ax, cx
lea eax, [edx + eax + 0x80]
and eax, 0xffff
mov ecx, eax
shr ecx, 8
add ecx, eax
sar ecx, 8
mov byte [esi], cl
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
mov edx, dword [ebx]
inc eax
add edi, 4
add esi, 3
cmp eax, edx
mov dword [esp + 0x1c], eax
jb 0x497118
jmp case.0x4967a3.6
cmp dword [esp + 0x34], esi
je 0x497484
cmp dword [esp + 0x38], esi
je 0x497484
cmp dword [esp + 0x3c], esi
je 0x497484
mov eax, dword [ebx]
mov dword [esp + 0x1c], esi
cmp eax, esi
jbe case.0x4967a3.6
mov esi, dword [esp + 0x18]
mov ebp, dword [esp + 0x40]
mov eax, dword [esp + 0x20]
lea edx, [esi + 2]
inc esi
movzx di, byte [esi + 5]
movzx cx, byte [esi + 6]
shl edi, 8
add edi, ecx
cmp di, 0xffff
jne 0x4972c9
xor ecx, ecx
mov eax, ebp
mov cl, byte [esi]
mov edi, dword [esp + 0x34]
and eax, 0xff
mov ebx, ecx
mov cl, al
shr ebx, cl
xor ecx, ecx
mov cl, byte [esi - 1]
mov ebx, dword [edi + ebx*4]
mov cx, word [ebx + ecx*2]
xor ebx, ebx
mov bl, ch
mov byte [edx - 1], cl
xor ecx, ecx
mov byte [edx - 2], bl
mov cl, byte [esi + 2]
mov ebx, ecx
mov cl, al
shr ebx, cl
xor ecx, ecx
mov cl, byte [esi + 1]
mov ebx, dword [edi + ebx*4]
mov cx, word [ebx + ecx*2]
xor ebx, ebx
mov bl, ch
mov byte [edx + 1], cl
xor ecx, ecx
mov byte [edx], bl
mov cl, byte [esi + 4]
mov ebx, ecx
mov cl, al
shr ebx, cl
xor eax, eax
mov al, byte [esi + 3]
mov ecx, dword [edi + ebx*4]
mov ebx, dword [esp + 0x14]
mov ax, word [ecx + eax*2]
xor ecx, ecx
mov cl, ah
mov byte [edx + 3], al
mov byte [edx + 2], cl
jmp 0x497462
test di, di
jne 0x4972fc
xor ecx, ecx
mov cl, byte [eax + 3]
mov byte [edx - 2], cl
mov cl, byte [eax + 2]
mov byte [edx - 1], cl
xor ecx, ecx
mov cl, byte [eax + 5]
mov byte [edx], cl
mov cl, byte [eax + 4]
mov byte [edx + 1], cl
xor ecx, ecx
mov cl, byte [eax + 7]
mov byte [edx + 2], cl
mov cl, byte [eax + 6]
mov byte [edx + 3], cl
jmp 0x497466
and edi, 0xffff
mov eax, 0xffff
sub eax, edi
mov ebx, ebp
mov dword [esp + 0x18], eax
mov ebp, dword [esp + 0x3c]
and ebx, 0xff
xor eax, eax
mov al, byte [esi]
mov cl, bl
shr eax, cl
xor ecx, ecx
mov cl, byte [esi - 1]
mov eax, dword [ebp + eax*4]
xor ebp, ebp
mov bp, word [eax + ecx*2]
mov eax, dword [esp + 0x20]
xor ecx, ecx
imul ebp, edi
mov cx, word [eax + 2]
imul ecx, dword [esp + 0x18]
lea ecx, [ecx + ebp + 0x8000]
mov eax, ecx
shr eax, 0x10
add eax, ecx
mov ecx, dword [esp + 0x40]
shr eax, 0x10
and eax, 0xffff
and ecx, 0xffff
mov ebp, eax
mov dword [esp + 0x2c], ecx
and ebp, 0xff
shr ebp, cl
mov ecx, dword [esp + 0x38]
shr eax, 8
mov ecx, dword [ecx + ebp*4]
mov ebp, dword [esp + 0x3c]
mov ax, word [ecx + eax*2]
xor ecx, ecx
mov cl, ah
mov byte [edx - 1], al
xor eax, eax
mov byte [edx - 2], cl
mov al, byte [esi + 2]
mov cl, bl
shr eax, cl
xor ecx, ecx
mov cl, byte [esi + 1]
mov eax, dword [ebp + eax*4]
xor ebp, ebp
mov bp, word [eax + ecx*2]
mov eax, dword [esp + 0x20]
xor ecx, ecx
imul ebp, edi
mov cx, word [eax + 4]
imul ecx, dword [esp + 0x18]
lea ecx, [ecx + ebp + 0x8000]
mov eax, ecx
shr eax, 0x10
add eax, ecx
mov ecx, dword [esp + 0x2c]
shr eax, 0x10
and eax, 0xffff
mov ebp, eax
and ebp, 0xff
shr ebp, cl
shr eax, 8
mov ecx, ebp
mov ebp, dword [esp + 0x38]
mov ecx, dword [ebp + ecx*4]
mov ax, word [ecx + eax*2]
xor ecx, ecx
mov cl, ah
mov byte [edx + 1], al
xor eax, eax
mov byte [edx], cl
mov al, byte [esi + 4]
mov cl, bl
shr eax, cl
xor ecx, ecx
mov ebx, dword [esp + 0x3c]
mov cl, byte [esi + 3]
mov eax, dword [ebx + eax*4]
xor ebx, ebx
mov bx, word [eax + ecx*2]
mov eax, dword [esp + 0x20]
xor ecx, ecx
imul ebx, edi
mov cx, word [eax + 6]
imul ecx, dword [esp + 0x18]
lea ecx, [ebx + ecx + 0x8000]
mov ebx, dword [esp + 0x14]
mov eax, ecx
shr eax, 0x10
add eax, ecx
mov ecx, dword [esp + 0x2c]
shr eax, 0x10
and eax, 0xffff
mov edi, eax
and edi, 0xff
shr edi, cl
shr eax, 8
mov ecx, dword [ebp + edi*4]
mov ebp, dword [esp + 0x40]
mov ax, word [ecx + eax*2]
xor ecx, ecx
mov cl, ah
mov byte [edx + 3], al
mov byte [edx + 2], cl
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
mov edi, dword [ebx]
inc ecx
add esi, 8
add edx, 6
cmp ecx, edi
mov dword [esp + 0x1c], ecx
jb 0x49723e
jmp case.0x4967a3.6
mov eax, dword [ebx]
mov dword [esp + 0x1c], esi
cmp eax, esi
jbe case.0x4967a3.6
mov ebp, dword [esp + 0x18]
lea edi, [ebp + 2]
add ebp, 7
movzx cx, byte [ebp - 1]
movzx dx, byte [ebp]
shl ecx, 8
add ecx, edx
cmp cx, 0xffff
jne 0x4974c9
lea eax, [ebp - 7]
lea ecx, [edi - 2]
mov edx, dword [eax]
mov dword [ecx], edx
mov ax, word [eax + 4]
mov word [ecx + 4], ax
jmp 0x4975df
test cx, cx
jne 0x497500
mov eax, dword [esp + 0x20]
xor ecx, ecx
mov cl, byte [eax + 3]
mov byte [edi - 2], cl
mov dl, byte [eax + 2]
xor ecx, ecx
mov byte [edi - 1], dl
mov cl, byte [eax + 5]
mov byte [edi], cl
mov dl, byte [eax + 4]
xor ecx, ecx
mov byte [edi + 1], dl
mov cl, byte [eax + 7]
mov byte [edi + 2], cl
mov dl, byte [eax + 6]
mov byte [edi + 3], dl
jmp 0x4975df
movzx ax, byte [ebp - 5]
movzx dx, byte [ebp - 4]
movzx si, byte [ebp - 3]
shl eax, 8
add eax, edx
and ecx, 0xffff
movzx dx, byte [ebp - 2]
movzx bx, byte [ebp - 7]
shl esi, 8
add esi, edx
mov edx, 0xffff
sub edx, ecx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x18], edx
and eax, 0xffff
movzx dx, byte [ebp - 6]
shl ebx, 8
add ebx, edx
mov edx, dword [esp + 0x20]
and ebx, 0xffff
and esi, 0xffff
imul ebx, ecx
xor ecx, ecx
mov cx, word [edx + 2]
mov edx, dword [esp + 0x18]
imul ecx, edx
lea ebx, [ebx + ecx + 0x8000]
mov ecx, ebx
shr ecx, 0x10
add ecx, ebx
xor ebx, ebx
shr ecx, 0x10
mov bl, ch
mov byte [edi - 1], cl
mov byte [edi - 2], bl
mov ebx, dword [esp + 0x20]
xor ecx, ecx
mov cx, word [ebx + 4]
mov ebx, dword [esp + 0x40]
imul ecx, edx
imul eax, ebx
lea eax, [ecx + eax + 0x8000]
imul esi, ebx
mov ecx, eax
mov ebx, dword [esp + 0x14]
shr ecx, 0x10
add ecx, eax
xor eax, eax
shr ecx, 0x10
mov al, ch
mov byte [edi + 1], cl
mov byte [edi], al
mov eax, dword [esp + 0x20]
xor ecx, ecx
mov cx, word [eax + 6]
imul ecx, edx
lea esi, [ecx + esi + 0x8000]
mov eax, esi
shr eax, 0x10
add eax, esi
shr eax, 0x10
xor ecx, ecx
mov byte [edi + 3], al
mov cl, ah
mov byte [edi + 2], cl
mov eax, dword [esp + 0x1c]
mov ecx, dword [ebx]
inc eax
add ebp, 8
add edi, 6
cmp eax, ecx
mov dword [esp + 0x1c], eax
jb 0x49749c
mov al, byte [ebx + 8]
pop edi
test al, 4
je 0x497628
and al, 0xfb
mov byte [ebx + 8], al
mov al, byte [ebx + 0xa]
dec al
mov byte [ebx + 0xa], al
mov cl, al
mov al, byte [ebx + 9]
imul cl
mov byte [ebx + 0xb], al
and eax, 0xff
imul eax, dword [ebx]
add eax, 7
shr eax, 3
mov dword [ebx + 4], eax
pop esi
pop ebp
pop ebx
ret